С учетом некоторых json:
{
"firstName": "John",
"lastName" : "doe",
"age" : 26,
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
},
"phoneNumbers": [
{
"type" : "Bill's Automotive",
"number": "0123-4567-8888"
},
{
"type" : "home",
"number": "0123-4567-8910"
}
]
}
Я хочу вернуть Объект телефонного номера Bill's Automotive:
{
"type" : "Bill's Automotive",
"number": "0123-4567-8888"
}
Используя Json.NET, который использует jsonpath синтаксис, у меня есть выражение фильтра:
phoneNumbers.[?(@.type=="Bill's Automotive")]
И это прекрасно работает, когда вы его тестируете:
, где вы можете попробовать это сами.
Но происходит сбой в Json.net
Но в C # во время выполнения, используя Newtonsoft Json.Net, код выдает исключение:
JToken billsPhone= o.SelectToken("phoneNumbers.[?(@.type=="Bill's Automotive")]");
Newtonsoft.Json.JsonException: Unexpected character while parsing path query: s
Очевидно, он видит апостроф и считает его концом строки запроса.
Другие варианты, которые я пробовал
phoneNumbers.[?(@.type=="Bill's Automotive")]
phoneNumbers.[?(@.type=="Bill\'s Automotive")]
phoneNumbers.[?(@.type=="Bill''s Automotive")]
phoneNumbers.[?(@.type=="Bill\u0027s Automotive")]
Так что я сдаюсь.
Как вы фильтруете json в Newtonsoft Json.NET?