You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过JSON Path获取匹配子项的LogicNodeList父节点

JSONPath 获取包含特定子项的父节点

问题场景

我用JSONPath更新字段中的名称引用功能正常,但需要返回该引用对应的父项时,修改路径遇到层级匹配错误。

  • 有效更新路径:
    $.LogicNodeList[*].compChildren[?(@.diagramName == 'S-DGN-B')].diagramName
    
  • 尝试的父项获取路径(执行报错):
    $.LogicNodeList[?(@.compChildren[?(@.diagramName == 'S-DGN-B')])]
    

示例JSON

{
  "LogicNodeList": [
    {
      "id": "b61aa8a5-8edd-4207-ab58-ccba83afe67e",
      "name": "CCS_TOP",
      "desc": "",
      "gateType": "gtOr",
      "rootName": "CCS_TOP",
      "compChildren": [],
      "gateChildren": [
        "CCS-Trains",
        "CCS-Supply"
      ],
      "isRoot": true
    },
    {
      "id": "27865e6f-b457-42ff-9303-11c700657212",
      "name": "CCS-Supply",
      "desc": "",
      "gateType": "gtOr",
      "rootName": "CCS_TOP",
      "compChildren": [
        {
          "diagramName": "S-DGN-B",
          "stateValues": []
        },
        {
          "diagramName": "C-MOV-1",
          "stateValues": []
        },
        {
          "diagramName": "S-TNK-T1",
          "stateValues": []
        }
      ],
      "gateChildren": [],
      "isRoot": false
    },
    {
      "id": "6d366c22-5e48-45b5-ac5d-9325a122e451",
      "name": "CCS-Train-A",
      "desc": "",
      "gateType": "gtOr",
      "rootName": "CCS_TOP",
      "compChildren": [
        {
          "diagramName": "C-PMP-A",
          "stateValues": []
        },
        {
          "diagramName": "S-DGN-A",
          "stateValues": []
        },
        {
          "diagramName": "C-CKV-A",
          "stateValues": []
        },
        {
          "diagramName": "C-MOV-A",
          "stateValues": []
        }
      ],
      "gateChildren": [],
      "isRoot": false
    }
  ]
}

解决方案

使用以下JSONPath可以正确获取目标父项:

$.LogicNodeList[?(@.compChildren[*].diagramName == 'S-DGN-B')]

逻辑说明

遍历LogicNodeList中的每个元素,检查该元素的compChildren数组是否存在任意一个子项的diagramName等于'S-DGN-B',满足条件的元素会被完整返回。

原路径报错的原因是:多数JSONPath实现不支持嵌套的[?()]过滤器,内层过滤器会导致上下文混淆,无法正确关联父级元素的判断条件。

期望返回结果

[{
  "id": "27865e6f-b457-42ff-9303-11c700657212",
  "name": "CCS-Supply",
  "desc": "",
  "gateType": "gtOr",
  "rootName": "CCS_TOP",
  "compChildren": [
    {
      "diagramName": "S-DGN-B",
      "stateValues": []
    },
    {
      "diagramName": "C-MOV-1",
      "stateValues": []
    },
    {
      "diagramName": "S-TNK-T1",
      "stateValues": []
    }
  ],
  "gateChildren": [],
  "isRoot": false
}]

内容的提问来源于stack exchange,提问作者runfastman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:49:56