json-path:过滤另一个数组中数组的子节点

时间:2017-09-26 06:33:21

标签: java json spring-boot predicate jsonpath

我在JSONArray中有一个JSONArray,我想在这个上应用JSONPath表达式,以便在内部JSONArray上满足条件时获得JSONObject或JSONArray。

例如:

{
  "A": [
    {
      "B": [
        {
          "id": 1
        },
        {
          "id": 2
        },
        {
          "id": 3
        }
      ],
      "C": {
        "id": 10,
        "name": "PQR"
      },
      "id": 25,
      "name": "XYZ"
    },
    {
      "B": [
        {
          "id": 4
        },
        {
          "id": 5
        },
        {
          "id": 6
        }
      ],
      "C": {
        "id": 15,
        "name": "PQR"
      },
      "id": 20,
      "name": "XYZ"
    }
  ]
}

如果我希望A的所有元素都在C.id = 10,我会使用:$.A[?(@.C.id == 10)]

现在,使用什么谓词来获取A中的所有对象,其中B.id = 1?注意:B是JSON对象的数组。

1 个答案:

答案 0 :(得分:0)

我在$.A[?(@.B[?(@.id == 1)])]

取得了成功

但仅在使用Scala的Gatling实现时: http://jsonpath.herokuapp.com/

Jayway实现似乎完全忽略了内部过滤器,并且根据他们的GitHub上的issue,这是一个错误。