首页 > 解决方案 > 根据条件从 REST Json 响应中检索特定数据

问题描述

我查看了所有相关的帖子,但找不到我要找的东西。使用https://codebeautify.org/jsonpath-testerhttps://jsonpath.com/验证查询语法。在下面的代码中,如果我只打印 id,我会得到正确的响应。我正在根据特定的用户 ID 和 ID 查找标题。

获取“无效的 JSON 表达式”作为 o/p。任何人都可以在这里帮忙!

public void restPost2(){
    RestAssured.baseURI = "https://jsonplaceholder.typicode.com/posts";
    RequestSpecification req = RestAssured.given().log().all();
    String res1 = req.given().when().get().then().extract().asString();
    JsonPath js = new JsonPath(res1);
    System.out.println("list of Ids : " + js.get("id"));
    System.out.println("specific title : " + js.get("(?(@.userId == '3') && (@.id == '23')).title"));
}

标签: javajsonrestdata-retrieval

解决方案


以下更改将解决您的问题。

  • 使用 JsonPath.read 将 json 字符串设置为查询

  • 需要更正 jsonPath 查询的语法。

建议您再次参考 jsonPath 文档。

请找到一个工作示例

json = <data fetched for the api>

        Object x = JsonPath.read(json,"$..id");

        Object y = JsonPath.read(json,"$[?(@.userId == 3 && @.id == 23)]");

推荐阅读