如何使用JSONPath表达式提取JSON中book对象的属性值数组
JSONPath能否将对象属性值提取为独立数组?
问题描述
原始JSON数据:
{ "book": [{ "category": "reference", "author": "Nigel Rees", "title": "Sayings of the Century", "price": 8.95 }, { "category": "fiction", "author": "Evelyn Waugh", "title": "Sword of Honour", "price": 12.99 }] }
需求:提取book数组内每个对象的属性值,组成独立数组,期望输出:
[ "reference", "Nigel Rees", "Sayings of the Century", 8.95 ], [ "fiction", "Evelyn Waugh", "Sword of Honour", 12.99 ]
请问是否可以使用JSONPath表达式实现该需求?
回答
可以使用JSONPath实现该需求,具体实现方式取决于你使用的JSONPath工具:
固定属性名场景:如果对象的属性名是确定的(如示例中的
category、author、title、price),多数主流JSONPath实现(如Jayway JsonPath)支持多属性选择表达式:$.book[*][category,author,title,price]这个表达式会遍历
book数组中的每个对象,依次提取指定属性值,并将每个对象的属性值组合成独立数组,完全匹配期望的输出格式。动态属性名场景:如果需要提取对象的所有属性值且不依赖固定属性名,部分JSONPath实现支持结合配置实现分组返回。比如在Jayway JsonPath中,开启
RETURN_VALUES_AS_ARRAYS配置后,配合表达式:$.book[*].*工具会将每个对象的所有属性值封装为独立数组返回,而非返回扁平的所有值集合。
注意:不同JSONPath实现的语法特性存在细微差异,建议根据实际使用的工具调整表达式或配置。
内容的提问来源于stack exchange,提问作者Krishna Madhav
相关产品推荐
相关产品推荐

