【问题标题】:json-path: Filter on child of an array within another arrayjson-path:过滤另一个数组中的一个数组的子元素
【发布时间】:2018-03-07 06:09:05
【问题描述】:

我在 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"
    }
  ]
}

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

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

【问题讨论】:

    标签: java json spring-boot predicate jsonpath


    【解决方案1】:

    我在$.A[?(@.B[?(@.id == 1)])] 上取得了成功

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

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

    【讨论】:

    • 你说得对,加特林确实对我有用。但是我使用的是 Jayway 库,你确定它有限制吗?
    • @VishalMahuli 更新了答案,它看起来像一个错误。
    猜你喜欢
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 2020-11-25
    • 2019-01-03
    相关资源
    最近更新 更多