假设我有一个GET请求,返回的内容如下:
[
{
"id": 1,
"name": "Mark"
},
{
"id": 2,
"name": "Steve"
},
{
"id": 3,
"name": "Bill"
}
]
如何从列表中返回想要的对象?或包含可能包含此JSON作为字符串的JSON的东西,或从响应中仅获取其中一项的正确方法是什么,例如,让我只需要获取Bills信息,因此我想解析JSON以仅获取以下内容:< / p>
{
"id": 3,
"name": "Bill"
}
不,我不想在GET请求URL中进行此解析。我需要能够从GET请求返回的所有内容的列表中获取它。
答案 0 :(得分:0)
"$[2]"
在JsonPath中,$代表查询的JSON的匿名根,对于这种情况,当您需要直接引用它而不是诸如"stuff.things[8]"
在这种情况下,您要分析的数组是匿名根,因此您将其称为$
。然后,您希望该元素位于此数组的索引2处,因此它为$[2]
答案 1 :(得分:0)
我做了另一种完全适合我需要的解决方案。我将JSON响应反序列化为JSON主体对应的POJO类列表:
List<MyEntity> myList = new ArrayList<>();
myList = given().
contentType(ContentType.JSON).
when().
get(getURL).
then().
extract().
body().
jsonPath().
getList(".", MyEntity.class);
通过这种方式,我可以获得初始化后的MyEntity类的列表,并且我可以做任何我需要做的事情,例如,我只需要修改以下值:
myList.get(0).setName("newName");
然后,我可以通过POST / PUT调用或类似的方式将其发送回去。就像魅力一样!