RestAssured JsonPath:如何从 json 中过滤 json 个对象
RestAssured JsonPath: How to filter json objects from json
我正在尝试从 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"
}
}
}
}
从项目对象中筛选项目的最佳方法,但我不明白如何使用 json 路径进行筛选。
您正在尝试将一个对象反序列化为一个对象数组。您的代码或您的 JSON(很可能)是错误的。
如果你想将 items
反序列化为一个数组,你的 JSON 应该是这样的:
{
"wgcTournaments": {
"items": [
{
"jcr:primaryType": "nt:unstructured",
"item0": {},
"item1": {},
"item2": {},
"item3": {}
}
]
}
}
否则,如果您的 JSON 是正确的,您应该使用以下行反序列化您的 JSON:
path.getObject("wgcTournaments.items", MyClass.class)
编辑:编辑后,这似乎是您想要的:
如果你的 JSON 是正确的并且你确实想要一个数组,我假设每个 itemX
是一个键,{}
是对应的值。在这种情况下,你要知道你不能在JSON中有一个关联数组,你应该使用自定义的解决方案来反序列化它,因为你的关联数组将被转换为一个对象。
我终于找到了解决问题的方法。
如果你想从项目中获取项目你需要使用这个json路径
path.getObject("wgcTournaments.items*.
find{it.key.startsWith('item')}.value",ItemClass[].class);
注意:
它是 RestAssured,他使用 Gpath 更多详细信息,您可以在此处找到
http://docs.groovy-lang.org/latest/html/documentation/#_gpath
我正在尝试从 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"
}
}
}
}
从项目对象中筛选项目的最佳方法,但我不明白如何使用 json 路径进行筛选。
您正在尝试将一个对象反序列化为一个对象数组。您的代码或您的 JSON(很可能)是错误的。
如果你想将 items
反序列化为一个数组,你的 JSON 应该是这样的:
{
"wgcTournaments": {
"items": [
{
"jcr:primaryType": "nt:unstructured",
"item0": {},
"item1": {},
"item2": {},
"item3": {}
}
]
}
}
否则,如果您的 JSON 是正确的,您应该使用以下行反序列化您的 JSON:
path.getObject("wgcTournaments.items", MyClass.class)
编辑:编辑后,这似乎是您想要的:
如果你的 JSON 是正确的并且你确实想要一个数组,我假设每个 itemX
是一个键,{}
是对应的值。在这种情况下,你要知道你不能在JSON中有一个关联数组,你应该使用自定义的解决方案来反序列化它,因为你的关联数组将被转换为一个对象。
我终于找到了解决问题的方法。
如果你想从项目中获取项目你需要使用这个json路径
path.getObject("wgcTournaments.items*.
find{it.key.startsWith('item')}.value",ItemClass[].class);
注意: 它是 RestAssured,他使用 Gpath 更多详细信息,您可以在此处找到 http://docs.groovy-lang.org/latest/html/documentation/#_gpath