【发布时间】:2017-04-30 14:58:12
【问题描述】:
使用以下 JSON(来自 http://jsonpath.com):
{
"firstName": "John",
"lastName" : "doe",
"age" : 26,
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
},
"phoneNumbers": [
{
"type" : "iPhone",
"number": "0123-4567-8888"
},
{
"type" : "home",
"number": "0123-4567-8910"
}
]
}
只有当 firstName 是 John 时,我才想获取根对象。
我已经尝试过这些输入和许多其他类似的输入:
$.[?($.firstName == 'John')]$.[?($.'firstName' == 'John')]$.[?(@.firstName == 'John')]$[?($.firstName == "John")]
似乎过滤仅适用于数组,因此这是一个不受支持的功能。有人知道在 Json.NET 中执行此操作的方法,或者确认这是不可能的,也许可以将我指向支持上述内容的库?
我使用的是 F#,但这并不重要,因为 F# 与 C#、.NET 和 NuGet 包兼容。
【问题讨论】:
-
可能无法实现或工作。见Issue #1256: JSONPath scripts not executing correctly for objects。虽然看到 Newtonsoft JSON.Net SelectToken Issue 找到了类似问题的解决方法。顺便说一句,您实际上是在尝试匹配根对象吗?
-
我试图测试给定属性是否等于给定字符串,如果是,则返回整个根对象。下面安迪的回答表明我的做法是错误的。