问题描述
data: [
{
"name": "mark","age": "20"
},{
"name": "john","age": "10"
}
]
在这种情况下,如何让年龄大于 10?
示例代码:
JsonPath.read(json,"$.data[?(@.age > 10)]");
解决方法
这可以使用 Jayway 的 JsonPath 库来完成。
首先,您显示的 JSON 不适合处理,缺少包装 { }
。
其次,如果您将数字作为字符串进行测试,Jayway 的比较运算符会起作用(这有点奇怪,但库以这种方式在内部执行了所需的转换)。
所以,使用这个 JSON:
{
"data":[
{
"name":"mark","age":"20"
},{
"name":"john","age":"10"
}
]
}
还有这个过滤器:
$.data[?(@.age > '10')]
您得到了预期的结果 [{"name" : "mark","age" : "20"}]
。您可以online here对其进行测试。
您可以将 json 字符串转换为 java 对象。然后你可以做如下操作
import com.google.gson.Gson;
public class Example {
public static void main(String[] args) {
try {
Gson gson = new Gson();
String json = "[{\"name\":\"mark\",\"age\":\"20\"},{\"name\":\"john\",\"age\":\"10\"}]";
Student[] studentList = gson.fromJson(json,Student[].class);
for (int i = 0; i < studentList.length; i++) {
Student student = studentList[i];
if (student.getAge() > 10) {
System.out.println(student.getName()+" age is greater than 10");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
将json字符串转换为对象:https://beginnersbug.com/convert-json-string-to-java-object/