评估示例的 jsonpath 表达式

问题描述 投票:0回答:1
{
  "a": [
    {
      "b": {
        "c": [
          {
            "id": "123"
          }
        ],
        "d": {
          "e": {
            "f": [
              {
                "name": "abc",
                "type": "in"
              },
              {
                "name": "xyz",
                "type": "out"
              }
            ]
          }
        }
      }
    },
    {
      "b": {
        "c": [
          {
            "id": "456"
          }
        ],
        "d": {
          "e": {
            "f": [
              {
                "name": "def",
                "type": "out"
              },
              {
                "name": "pqr",
                "type": "out"
              }
            ]
          }
        }
      }
    }
  ]
}

我正在尝试提取 type='in' 的 id。因此,根据上面的示例,输出应为 123,因为第一个元素中只有 abc 具有类型“in”。 我尝试了多种方法但没有成功提取它。有人可以帮忙吗?

使用以下表达式,我可以提取值为“in”的节点,但如何提取同一对象的相应 id/id(即 123)?

$.a[*].b.d[*].f[?(@.type=='in')]

可以在这里尝试 json 路径: JSON路径在线工具

json jsonpath json-path-expression json-extract json-arrayagg
1个回答
0
投票

$.a 为您提供一个数组,您想要访问数组的第一项,并且 c 对象也有一个数组值。 所以方式就像;

$.a[0].b.c[0].id
会给你结果
123

© www.soinside.com 2019 - 2024. All rights reserved.