2

我正在尝试从 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"
      }
    }
  }
}

从项目对象中过滤项目的最佳方法,但我不明白如何使用 json 路径进行操作。

4

2 回答 2

1

最后我找到了我的问题的解决方案。

如果要从项目中获取项目,则需要使用这个 json 路径

path.getObject("wgcTournaments.items*.
find{it.key.startsWith('item')}.value",ItemClass[].class);

注意:它是 RestAssured 并且他使用 Gpath 更多细节你可以在这里找到 http://docs.groovy-lang.org/latest/html/documentation/#_gpath

于 2016-12-19T15:10:20.910 回答
0

您正在尝试将对象反序列化为对象数组。您的代码或 JSON(很可能)是错误的。

如果你想反序列items化为一个数组,你的 JSON 应该如下:

{
  "wgcTournaments": {
    "items": [
        {
          "jcr:primaryType": "nt:unstructured",
          "item0": {},
          "item1": {},
          "item2": {},
          "item3": {}
        }
    ]
  }
}

否则,如果您的 JSON 是正确的,您应该使用以下行反序列化您的 JSON:

path.getObject("wgcTournaments.items", MyClass.class)

编辑:编辑后,这似乎是你想要的:

如果您的 JSON 正确并且您确实需要一个数组,我假设每个itemX都是键和{}相应的值。在这种情况下,您必须知道在 JSON 中不能有关联数组,您应该使用自定义解决方案来反序列化它,因为您的关联数组将被转换为对象。

于 2016-12-19T13:08:42.360 回答