当前位置: 首页 > 知识库问答 >
问题:

RestAssured JsonPath:如何从 json 中筛选 json 对象

慎弘化
2023-03-14

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

path.get("wgcTournaments.items")

我应该使用什么路径来获取项目中的所有项目(item0、item1、item2…)?

你能给我一个怎么做的建议吗。

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路径。

共有2个答案

孙永思
2023-03-14

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

如果要将< code>items反序列化为数组,JSON应该如下所示:

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

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

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

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

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

马星阑
2023-03-14

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

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

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

注意:这是RestAssured,他使用了Gpath,您可以在这里找到更多详细信息http://docs.groovy-lang.org/latest/html/documentation/#_gpath

 类似资料:
  • 首先我创建一个管理员用户和两个模型 之后,我手动将我的管理员用户分配给两个TCU。 第一个Tcu有三个位置数据: 第二个Tcu有两个位置数据: 之后,我创建一个视图,以获得两个TCU的最后位置。 结果是我只得到第二个TCU的最后一个位置: 如何从第一个和第二个TCU获取最后一个位置?

  • 问题内容: 我有一个JSON数组,我想根据名称和字母顺序对其进行排序。我的Json如下。 如您所见,我有一个键值“名称”,因此我得到了尊敬的名称。我想完全基于该名称对Json数组进行排序,并且也按字母顺序排序。 问题答案: 转换为并使用集合对您的数组列表进行排序 例如 :

  • 我有这个json: 我想使用通过其名称查找元素“foo”(“foo”) 我尝试了类似 但它似乎不起作用(我检查了 https://jsonpath.com)

  • 问题内容: 您好,有人可以告诉我此查询出了什么问题。 我得到的错误是 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以获取在’(@json,’$ [*]’COLUMNS(name VARCHAR(40)PATH’$ .name’,’在第1行 仅出于信息目的,我使用TOAD作为工具将sql实例连接到云。 问题答案: 首先,在这种情况下,您无需在mysql中声明变量。只需使用“ SE

  • 在这里json 如何使用库boost获得更新的值4? 我知道怎么取这样一个“ts”值。但是我不明白如何取两个括号的值

  • 问题内容: 我正在尝试输出到Jackson JSON中的JSON对象。但是,我无法使用以下代码获取JSON对象。 程序运行后,该文件包含正确的JSON数据。但是,为空()。我查找了ObjectMapper的Javadoc,但找不到一种简便的方法来写入(杰克逊中的JSON对象)。没有像下面这样的方法: 如何直接写信给? 问题答案: 您需要改用ObjectMapper#valueToTree()。 这