使用JSONPath提取数据时如何保留对应字段的键名?
首先先纠正一个前提:你写的预期返回格式["_id":"xxx"]属于不合法的JSON结构,数组无法直接存储键值对,标准合法的预期结构应为对象数组,格式如下:
[ {"_id":"610cb8ee541fea0009189c37"}, {"_id":"6113583b0fea490008d56eae"}, {"_id":"611b6068fed9100009a4f68a"} ]
要实现这个需求,你可以直接使用JsonPath的对象投影语法构造返回结构,修改查询表达式为:
$.activities[*].trackingProgress[*].items[*].{_id: @._id}
语法说明
- 末尾的
{_id: @._id}是投影语法,代表对每一个匹配到的items元素,返回一个新对象:- 键名自定义为
_id @指代当前匹配到的items元素,@._id就是取当前元素的_id属性作为值
- 键名自定义为
如果你的JsonPath运行环境不支持投影语法,也可以对现有返回的_id字符串数组做二次处理,遍历数组手动拼装成需要的对象数组即可,实现成本很低。
内容的提问来源于stack exchange,提问作者Lê Quốc Khánh
相关产品推荐
相关产品推荐

