Newtonsoft JSON.Net选择令牌问题



我有以下查询和样例JSON。我在"http://jsonpath.com/"上试了试,效果如预期。如果我在VisualStudio中尝试它,它不会返回任何结果。

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

JSON:

{
"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"
        }
    }
}   
}

和示例代码:

JObject obj = JObject.Parse(File.ReadAllText(@"d:tempsample.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
    }
 }

试试这个:

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

最新更新