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

我从根本上错过了什么,因为这个过滤器不起作用?

注意:最终目标是获得 namecontent.value

编辑:

https://jsonpath.herokuapp.com/ 上,路径确实有效。嗯...取决于实现?

请尝试以下 namecontent.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 相同的结果;但是,这种方法可能无法在所有情况下都令人满意。