gpt4 book ai didi

java - JsonPath 中的条件

转载 作者:行者123 更新时间:2023-11-29 06:26:16 27 4
gpt4 key购买 nike

我正在尝试按类型过滤 jsonPath。提取整数

我希望这不会返回任何内容,因为“xx”不是整数:

JsonPath.read("{'status': 'xx'}", "$.status", Criteria.where(".status").is(Integer.class));

类似这样

JsonPath.read("{'status': 'xx'}", "$.status", Criteria.where(".status").eq(200));

两种情况都返回 String = "xx"我希望它返回 null 或空字符串,因为它与数字 200 不匹配。

最佳答案

正确的@i.bondarenko,我会简单地添加 - 对于搜索状态值是否为整数的第一次检查 - 他/她应该使用模式传递给过滤器,例如

Pattern numberPattern = Pattern.compile("\\d+");
Filter filter = filter(where("status").regex(numberPattern));
Object test = JsonPath.read("{\"status\": \"xx\"}", "$[?].status", filter);

System.out.println("Test : " + test);

这将打印 Test : []

已更新

它确实是一个 JSONArray,因此,您已经在该数组中拥有整个 JSON 的整数(如果它们存在)。例如,

Pattern numberPattern = Pattern.compile("\\d+");
Filter filter = filter(where("status").regex(numberPattern));
net.minidev.json.JSONArray test = JsonPath.read("{\"status\": 300}", "$[?].status", filter);

if (!test.isEmpty()) {
for (Object object : test) {
System.out.println("Test : " + object.toString());
}
}

因此,无需添加 try-catch,只需检查 JSONArray 结果的大小就足够了

关于java - JsonPath 中的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58434530/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com