如何使用JSONPath从JSON数组中提取指定多个字段值?
可行的JSONPath解决方案:提取数组对象的key和cod字段
当然可以实现这个需求,你之前的表达式有两个问题:一是写错了目标字段(写了item而非cod),二是部分JSONPath实现对多字段选择的语法支持有差异。以下是几种可行方案:
方案1:支持多字段选择的JSONPath实现(如Jayway JsonPath)
使用如下表达式,直接指定要提取的两个字段:
$.array[*]['key', 'cod']
或者等价的简洁写法:
$.array[*][key,cod]
执行后会返回包含每个对象key和cod字段的数组:
[ {"key": 1, "cod": 123}, {"key": 2, "cod": 345}, {"key": 3, "cod": 126} ]
方案2:自定义投影写法(适配更多高级JSONPath库)
如果上述写法不生效,可使用字段映射的投影语法(同样支持Jayway等库):
$.array[*].{key: key, cod: cod}
这个语法明确指定要生成的新对象结构,返回结果和方案1一致。
方案3:兼容基础JSONPath实现的方法
如果你的JSONPath工具不支持多字段选择,可分两次提取后再组合:
- 提取所有
key值:$.array[*].key,结果为[1, 2, 3] - 提取所有
cod值:$.array[*].cod,结果为[123, 345, 126]
之后将两个数组按索引对应,组合成包含key和cod的键值对结构即可。
内容的提问来源于stack exchange,提问作者Cesare
相关产品推荐
相关产品推荐

