使用条件返回父元素和子数据的Json查询?

zsohkypk  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(110)

我有一个JSON(我知道它不是一个非常传统的JSON ;))

{ 
   "2958114":{"stockOnline": 305 }, 
   "2958113": {"stockOnline": 2}, 
   "2958115": {"stockOnline": 0} 
}

我想使用JSON查询提取stockOnline属性〈〉0的所有行(我使用https://jsonpath.com/对行进行测试)
我尝试使用这个查询$.*[?(@.stockOnline != 0)],它返回所有stockOnline值,但不返回整行。
我尝试了其他查询,但没有成功。
你有什么主意吗?
谢谢并致以问候
我尝试使用以下查询 $.[?(@.stockOnline!= 0)]*,该查询返回所有stockOnline值,但不返回整行。

w8f9ii69

w8f9ii691#

JSON中没有“行”,只有对象、数组、属性及其值。
如果您想要stockOnline不是0的“行”,则必须使用JSR223后处理器和自定义Groovy代码,如下所示:

def json = new groovy.json.JsonSlurper().parse(prev.getResponseData())

def entries = json.findAll(entry -> entry.getValue().stockOnline != 0)

entries.each { entry ->
    log.info('"' + entry.getKey() + '":' + new groovy.json.JsonBuilder(entry.getValue()).toString())
}

演示:

相关问题