放心Java:如何获得想要的JSON对象/主体?

放心Java:如何获得想要的JSON对象/主体?,java,json,rest-assured,Java,Json,Rest Assured,假设我有一个GET请求,该请求返回如下内容: [ { "id": 1, "name": "Mark" }, { "id": 2, "name": "Steve" }, { "id": 3, "name": "Bill" } ] 如何从列表中返回想要的对象?或者可能包含此JSON作为字符串的内容,或者从响应中仅获取其中一项的正确方法是什么,例如,让我们假设我只需要获取账单信息,所以我想解析该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);
myList.get(0).setName("newName");

然后我就可以通过POST/PUT电话或类似的方式将它们发送回去。工作起来很有魅力

您可以将其强制转换为js数组并从中访问所需内容。是否尝试使用Jackson或Gson进行解析?