java - 根据条件从 REST Json 响应中检索特定数据
问题描述
我查看了所有相关的帖子,但找不到我要找的东西。使用https://codebeautify.org/jsonpath-tester和https://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"));
}
解决方案
以下更改将解决您的问题。
使用 JsonPath.read 将 json 字符串设置为查询
需要更正 jsonPath 查询的语法。
请找到一个工作示例
json = <data fetched for the api>
Object x = JsonPath.read(json,"$..id");
Object y = JsonPath.read(json,"$[?(@.userId == 3 && @.id == 23)]");
推荐阅读
- string - 如何在 psql 中设置最大列宽?
- java - 使用 picocli 时如何通过命令行参数配置 lightbend/typesafeConfig
- codenameone - 菜单按钮消失
- sql - 如何在读取 BQ 中的 csv 数据时动态更改表架构?
- sql-server - SQL 无法批量加载,因为文件
不能打开。操作系统错误代码 1326 - python - 如何在Python(Django)中显示没有外键类名称的对象的值
- android - NotificationBuilder 上 smallIcon 和标题的颜色错误
- azure - 将多个文件夹从本地存储上传到 Azure,作为包含文件夹内容的新容器
- python - 新列作为索引而不是逗号分隔
- python - 如何使用 .whl 文件调用 pyspark 代码?