JSON.CN让代码更轻

JSONPath 查询

正在准备交互工具…

正在加载

JSONPath 查询

使用字段、数组索引与通配符提取数据。

从嵌套数据中按路径提取字段或数组元素,减少手工复制。

输入与结果示例

数据:{"users":[{"id":1},{"id":2}]}
表达式:$.users[*].id
结果:[1,2]

使用范围与注意事项

  • 支持 $、点字段、数组索引和通配符。
  • 当前不支持递归下降、过滤表达式或脚本执行;特殊字段名请先核对支持范围。

常见问题

查询结果为什么是数组?

路径可能匹配多个节点,结果用数组统一表示;空数组表示没有匹配项。

JSONPath 查询:从表达式到结果

先选择一个合成示例,看懂路径与结果的对应关系,再换成自己的 JSON。点击工作台的示例按钮会替换当前输入和表达式,并在浏览器本地运行。

可运行示例与预期结果

取嵌套字段

JSON 数据

{
  "profile": {
    "city": "北京"
  },
  "users": [
    {
      "id": 1,
      "name": "小林"
    },
    {
      "id": 2,
      "name": "小周"
    }
  ]
}

JSONPath 表达式

$.profile.city

匹配一个节点也返回数组:["北京"]。

取数组第一项

JSON 数据

{
  "profile": {
    "city": "北京"
  },
  "users": [
    {
      "id": 1,
      "name": "小林"
    },
    {
      "id": 2,
      "name": "小周"
    }
  ]
}

JSONPath 表达式

$.users[0].name

数组下标从 0 开始,结果为 ["小林"]。

取所有用户 ID

JSON 数据

{
  "profile": {
    "city": "北京"
  },
  "users": [
    {
      "id": 1,
      "name": "小林"
    },
    {
      "id": 2,
      "name": "小周"
    }
  ]
}

JSONPath 表达式

$.users[*].id

[*] 遍历数组元素,结果为 [1,2]。

字段不存在

JSON 数据

{
  "profile": {
    "city": "北京"
  },
  "users": [
    {
      "id": 1,
      "name": "小林"
    },
    {
      "id": 2,
      "name": "小周"
    }
  ]
}

JSONPath 表达式

$.users[*].email

[] 表示没有匹配项;请检查字段名、层级和大小写。

结果与错误排查

支持哪些 JSONPath 语法?

支持 $ 根节点、.字段、[0] 等非负数组下标、[*] 数组通配符和 .* 对象通配符。这是基础子集;不支持 $..id 递归下降、[?()] 过滤、切片、联合下标或脚本。带空格、点号等特殊字段名的方括号引号语法也暂不支持。

为什么返回数组,为什么会得到空数组?

一条路径可能匹配多个节点,因此统一返回数组。[] 表示没有匹配;[null] 表示匹配到一个明确的 null 值,两者含义不同。

JSON 数据错误和表达式错误怎么处理?

数据区必须是标准 JSON:字段和字符串用双引号,不含注释或尾逗号。表达式从 $ 开始,按字段层级逐段检查;使用本工具未支持的语法时会报错。

可以直接查询接口或上传大文件吗?

此页处理你粘贴或导入的数据,不请求业务接口。单次数据输入上限为 5 MB;数字型长 ID 请按接口合同使用字符串,以免精度丢失。