如何用JSONPath提取stockOnline非0的完整键值对?
JSONPath提取stockOnline非0的完整键值对方案
问题场景
现有如下JSON数据:
{ "2958114":{"stockOnline": 305 }, "2958113": {"stockOnline": 2}, "2958115": {"stockOnline": 0} }
需要提取所有stockOnline属性值不等于0的完整键值对,但使用$.*[?(@.stockOnline != 0)]仅返回属性值,无法保留原键值结构。
可行查询方案
使用包含keys()函数的JSONPath语句,可直接返回符合条件的完整键值对:
$[keys(@)[?($[#].stockOnline != 0)]]
语句说明
keys(@):获取顶层对象的所有键名数组;[?($[#].stockOnline != 0)]:筛选出键名对应的对象中stockOnline不等于0的键;$[筛选后的键数组]:根据筛选出的键,从顶层对象中提取对应的完整键值对。
内容的提问来源于stack exchange,提问作者gozen59
相关产品推荐
相关产品推荐

