JSONPath - 过滤器表达式未按预期工作
JSONPath - Filter expression is not working as expected
无法获得JSON工作路径。
JSON:
{
"data": [
{
"meta": {
"definition": {
"title": "ID",
"type": "text",
"key": "657876498"
}
},
"attributes": {
"id": "8606798",
"name": "ID",
"content": {
"value": "ABC"
}
}
}
]
}
路径:
$.data[*].attributes[?(@.name=='ID')]
returns 在 jsonpath.com 上不匹配或在 python 中使用 jsonpath-ng
。
我从根本上错过了什么,因为这个过滤器不起作用?
注意:最终目标是获得 name
和 content.value
。
编辑:
在 https://jsonpath.herokuapp.com/ 上,路径确实有效。嗯...取决于实现?
请尝试以下 name
和 content.value
的路径
$.data[:0].attributes.name
$.data[:0].attributes.content.value
确实,这似乎是 jsonpath-ng 实现的一个特性。它看起来像 "filter op can only be used on lists",即一个可迭代对象。
作为变通方法,我们可以过滤 data
-array 并在之后拉取 attributes
:
$.data[?(@.attributes.name="ID")].attributes
这给出了与使用您的路径的 Jayway 的 JsonPath 相同的结果;但是,这种方法可能无法在所有情况下都令人满意。
无法获得JSON工作路径。
JSON:
{
"data": [
{
"meta": {
"definition": {
"title": "ID",
"type": "text",
"key": "657876498"
}
},
"attributes": {
"id": "8606798",
"name": "ID",
"content": {
"value": "ABC"
}
}
}
]
}
路径:
$.data[*].attributes[?(@.name=='ID')]
returns 在 jsonpath.com 上不匹配或在 python 中使用 jsonpath-ng
。
我从根本上错过了什么,因为这个过滤器不起作用?
注意:最终目标是获得 name
和 content.value
。
编辑:
在 https://jsonpath.herokuapp.com/ 上,路径确实有效。嗯...取决于实现?
请尝试以下 name
和 content.value
$.data[:0].attributes.name
$.data[:0].attributes.content.value
确实,这似乎是 jsonpath-ng 实现的一个特性。它看起来像 "filter op can only be used on lists",即一个可迭代对象。
作为变通方法,我们可以过滤 data
-array 并在之后拉取 attributes
:
$.data[?(@.attributes.name="ID")].attributes
这给出了与使用您的路径的 Jayway 的 JsonPath 相同的结果;但是,这种方法可能无法在所有情况下都令人满意。