Java 重新启动JsonPath:如何从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

我试图从json文件中获取一个对象数组,但我遇到了一个问题

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不是我相信的数组,你就无法获得数组的路径。