2016-09-12 5 views
2

私は以下のクエリとサンプルJSONを持っています。 "http://jsonpath.com/"で試してみましたが、期待どおりに動作します。 VisualStudioで試しても結果は返されません。Newtonsoft JSON.Net SelectToken Issue

{ 
"Items": { 
    "Resource": { 
     "Id": "12345" 
    }, 
    "Services": { 
     "service1": { 
      "Name": "My First Service", 
      "Type": "WS", 
      "Url": "https://server1/service1" 
     }, 
     "service2": { 
      "Name": "Another Service", 
      "Type": "WS", 
      "Url": "https://server2/service2" 
     } 
    } 
} 
} 

とサンプルコード:ここで

$.Items.Services[?(@.Name == 'Another Service')].Url 

はJSONです

JObject obj = JObject.Parse(File.ReadAllText(@"d:\temp\sample.json")); 
var matches = obj.SelectTokens("$.Items.Services[?(@.Name == 'Another Service')].Url"); 
if(matches != null) 
{ 
    foreach(var item in matches) 
    { 
     item.Replace(replacement); // this never gets executed 
    } 
} 
+0

念のために、あなたがタイプミスをしたとされています'.SelectTokens'の代わりに正しいメソッド' .SelectToken'を呼び出しますか? – Niloct

+0

いいえ、私は複数形を呼んでいました。それはそれが期待されるものではないのですか? –

+0

ああ、私はlibに複数のメソッドもあることに気付きました。 – Niloct

答えて

1

試してみてくださいこの:

var matches = obj.SelectTokens("$.Items.Services[?(@..Name == 'Another Service')]..Url"); 
+0

ありがとうございました。出来た! 私はちょうど理由を知らない。それが結果を返す限り誰が気にします。 –

関連する問題