Java 重新启动JsonPath:如何从json中筛选json对象
我试图从json文件中获取一个对象数组,但我遇到了一个问题Java 重新启动JsonPath:如何从json中筛选json对象,java,rest-assured,rest-assured-jsonpath,Java,Rest Assured,Rest Assured Jsonpath,我试图从json文件中获取一个对象数组,但我遇到了一个问题 path.get("wgcTournaments.items") 我应该使用什么路径来获取项目中的所有项目(项目0、项目1、项目2…) 你能告诉我怎么做吗 Json示例 { "wgcTournaments": { "items": { "jcr:primaryType": "nt:unstructured", "item0": { "jcr:primaryType": "nt:uns
path.get("wgcTournaments.items")
我应该使用什么路径来获取项目中的所有项目(项目0、项目1、项目2…)
你能告诉我怎么做吗
Json示例
{
"wgcTournaments": {
"items": {
"jcr:primaryType": "nt:unstructured",
"item0": {
"jcr:primaryType": "nt:unstructured",
"test": "test",
"test1": "test1"
},
"item1": {
"jcr:primaryType": "nt:unstructured",
"test": "test",
"test1": "test1"
},
"item2": {
"jcr:primaryType": "nt:unstructured",
"test": "test",
"test1": "test1"
},
"item3": {
"jcr:primaryType": "nt:unstructured",
"test": "test",
"test1": "test1"
}
}
}
}
从items对象筛选item的最佳方法,但我不知道如何使用json路径 您正在尝试将对象反序列化为对象数组。您的代码或JSON(很可能)是错误的 如果要将
项
反序列化为数组,则JSON应如下所示:
{
"wgcTournaments": {
"items": [
{
"jcr:primaryType": "nt:unstructured",
"item0": {},
"item1": {},
"item2": {},
"item3": {}
}
]
}
}
否则,如果JSON正确,则应使用以下行反序列化JSON:
path.getObject("wgcTournaments.items", MyClass.class)
编辑:编辑后,这似乎就是您想要的:
如果您的JSON格式正确,并且确实需要一个数组,那么我假设每个
itemX
都是一个数组,并且{}
是相应的值。在这种情况下,您必须知道JSON中不能有关联数组,您应该使用自定义解决方案对其进行反序列化,因为您的关联数组将转换为对象。最后,我找到了解决问题的方法
如果您想从items中获取item,您需要使用这个json路径
path.getObject("wgcTournaments.items*.
find{it.key.startsWith('item')}.value",ItemClass[].class);
注:
这是重新发行的,他使用Gpath,你可以在这里找到更多细节
您试图获取一个
MyClass
对象数组,但在JSON中您有一个对象,而不是对象数组。AntoineB我想获取一个item0、item1、item2等数组,它们看起来像是一个ObjectStack数组看看我答案的最后一部分。您能建议我如何使用JSON路径从items中获取所有项目吗?也许像wgcturnaments.items.findAll{item…}这样的东西你不能直接得到它。你可能可以声明一些类似转换器的东西来处理数据,但你必须寻找如何实现,我对它不是很有经验。抱歉,我编辑了这个问题,我需要一个json路径,而不是转换它的方法。那么我想你不能,如果你的json不是我相信的数组,你就无法获得数组的路径。