放心和Java:如何获得想要的JSON对象/正文?



>假设我有一个返回如下内容的GET请求:

[
{
"id": 1,
"name": "Mark"
},
{
"id": 2,
"name": "Steve"
},
{
"id": 3,
"name": "Bill"
}
]

如何从列表中返回所需的对象? 或者可能包含此 JSON 作为字符串的内容,或者从响应中仅获取其中一个项目的正确方法是什么,例如,假设我只需要获取账单信息,所以我想解析该 JSON 以仅获取以下内容:

{
"id": 3,
"name": "Bill"
}

不,我不想在 GET 请求 URL 中进行此解析。我需要能够从 GET 请求返回的所有内容列表中获取它。

"$[2]"

在 JsonPath 中,$ 表示查询的 JSON 的匿名根,对于像这样的情况,当您需要直接引用它而不是类似"stuff.things[8]"

在这种情况下,您尝试分析的数组是匿名根,因此您将其称为$。然后,您希望该数组的索引 2 处的元素,因此它$[2]

我做了另一个实际上完全适合我需求的解决方案。我将 JSON 响应反序列化为 POJO 类列表,JSON 正文如下所示:

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 调用或类似的东西将它们发回。像魅力一样工作!

相关内容

  • 没有找到相关文章

最新更新