如何在 JsonPath 中过滤非数组
How to filter a non-array in JsonPath
使用以下 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 包兼容。
JSON 路径旨在定位 JSON 对象中的数据,而不是对该数据执行某些处理或测试。过滤器符号用于标识数组中的项目,目的是返回该数据或其中的某些部分。在数组中包含对象意味着可能有许多同名的属性必须通过其他方式进行过滤才能select它们的子集。
在对象 属性 上使用过滤器符号不是一回事。在具有特定名称的对象中只能有一个 属性,因此声明该名称足以唯一地标识它。您可以通过获取 $.firstName 然后单独测试值 "John"
来轻松实现您需要的效果
使用以下 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 包兼容。
JSON 路径旨在定位 JSON 对象中的数据,而不是对该数据执行某些处理或测试。过滤器符号用于标识数组中的项目,目的是返回该数据或其中的某些部分。在数组中包含对象意味着可能有许多同名的属性必须通过其他方式进行过滤才能select它们的子集。
在对象 属性 上使用过滤器符号不是一回事。在具有特定名称的对象中只能有一个 属性,因此声明该名称足以唯一地标识它。您可以通过获取 $.firstName 然后单独测试值 "John"