如何通过JsonPath表达式提取JSON中的首个ID值
提取动态属性结构中首个ID的通用JsonPath表达式
问题背景
给定JSON数据如下,需要提取其中首个ID值(900731):
{ "content": { "67215d9d-8a31-4397-a5e7-e694026034be": [ { "id": 900731 } ], "e62d8fbf-86a7-4c59-afaa-469d16b90645": [ { "id": 900732 } ], "9ae6f7dd-177a-4895-9a90-aa7b75de11bd": [ { "id": 900730 } ] } }
已尝试的表达式及问题:
$.content..id、$.content.*.*.id、$.content.*[0].id:均返回包含所有ID的数组[900731,900732,900730],无法单独获取首个ID$.content..id[0]、$.content.*.*.id[0]、$.content.*[0].id[0]:无法生效$.content['67215d9d-8a31-4397-a5e7-e694026034be'][0].id:可提取目标值,但属性名动态变化,不具备通用性
通用解决方案
使用以下JsonPath表达式可直接提取首个ID值:
$..id[0]
该表达式逻辑:
$..id递归遍历所有层级的id字段,返回包含所有ID的数组[0]取数组的第一个元素,即目标值900731
若需精准限定在content节点下,可使用:
$.content.*[0].id[0:1]
这里[0:1]通过切片语法取第一个元素,部分JsonPath实现也支持直接用[0]。
内容的提问来源于stack exchange,提问作者Bahram
相关产品推荐
相关产品推荐

