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

Insomnia中JSONPath Plus语法问题:无法提取多层级多值

问题描述

我有如下简化JSON结构:

{
  "data": {
    "jobs": [
      {
        "jobId": "85c9f596-85f5-4ffa-8b94-2cde23162ddf",
        "jobNotes": {
          "note1": "Some note 1",
          "note2": "Some note 2"
        }
      },
      // ... 其他job对象
    ]
  }
}

我希望在Insomnia中使用JSONPath Plus语法提取出如下格式的数据:

{
      "jobId": "job1",
      "jobNotes": [
             {
               "stuff":"blah",
               "stuff2": "3"
             }
          ]
}

核心需求是获取所有存在jobNotes的jobId及其关联的jobNotes数据。

我尝试了以下语法,但返回[]:

data.jobs[*].['jobId', 'jobNotes'][?(@.jobNotes != null)]

使用的Insomnia版本信息:

Version: Insomnia 2023.5.8
Build date: 9/7/2023
OS: Darwin arm64 22.6.0
Electron: 25.2.0
Node: 18.15.0
Node ABI: 116
V8: 11.4.183.23-electron.0
Architecture: arm64
解决方案

你的语法问题在于过滤条件位置错误,且属性选择写法有误。以下是两种符合需求的正确写法:

1. 保留原始jobNotes对象结构

如果只需提取符合条件的jobId和原始jobNotes对象,使用:

data.jobs[?(@.jobNotes != null)].[jobId, jobNotes]

逻辑说明

  • data.jobs[?(@.jobNotes != null)]:先过滤出所有包含非空jobNotes的job元素
  • .[jobId, jobNotes]:从过滤后的元素中提取指定字段

返回结果示例:

[
  {
    "jobId": "85c9f596-85f5-4ffa-8b94-2cde23162ddf",
    "jobNotes": {
      "note1": "Some note 1",
      "note2": "Some note 2"
    }
  }
]

2. 将jobNotes转为数组格式(匹配目标输出)

如果需要把原始jobNotes对象转换成你示例中的数组结构,结合$map函数处理:

data.jobs[?(@.jobNotes != null)].{jobId: jobId, jobNotes: $map(@.jobNotes, (v,k) => ({stuff: k, stuff2: v}))}

逻辑说明

  • $map(@.jobNotes, (v,k) => ({stuff: k, stuff2: v})):把jobNotes的每个键值对转换成{stuff: 键名, stuff2: 值}的对象,再组合成数组

返回结果示例:

[
  {
    "jobId": "85c9f596-85f5-4ffa-8b94-2cde23162ddf",
    "jobNotes": [
      {"stuff": "note1", "stuff2": "Some note 1"},
      {"stuff": "note2", "stuff2": "Some note 2"}
    ]
  }
]

原语法失效原因

  1. 过滤条件位置错误:你先提取了所有job的字段,再试图过滤,但JSONPath Plus要求先过滤再提取字段
  2. 属性选择写法有误:.[后多了空格,且字段名无需额外加单引号(加了不影响,但空格会导致语法错误)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:32:39