这里使用的阿里巴巴的fastjson来进行实现
先看JSONPath的API
package com.alibaba.fastjson;
public class JSONPath {
// 求值,静态方法
public static Object eval(Object rootObject, String path);
// 计算Size,Map非空元素个数,对象非空元素个数,Collection的Size,数组的长度。其他无法求值返回-1
public static int size(Object rootObject, String path);
// 是否包含,path中是否存在对象
public static boolean contains(Object rootObject, String path) { }
// 是否包含,path中是否存在指定值,如果是集合或者数组,在集合中查找value是否存在
public static boolean containsValue(Object rootObject, String path, Object value) { }
// 修改制定路径的值,如果修改成功,返回true,否则返回false
public static boolean set(Object rootObject, String path, Object value) {}
// 在数组或者集合中添加元素
public static boolean array_add(Object rootObject, String path, Object... values);
}
现在处理一段json 数据格式如下
{
"person": [{
"name": "李狗蛋",
"age": "20"
},
{
"name": "王大锤",
"age": "18"
}
]
}
1 读取name为李狗蛋的这个对象
List obj = (List<JSONObject>) JSONPath.read(jsonObject.toJSONString(), "$.person[?(@.name = '李狗蛋')]");
JSONObject o = (JSONObject) obj.get(0);
此时这个o就是name为李狗蛋的json对象
2 修改name为李狗蛋对象的年龄
JSONPath.set(jsonObject,"$.person[?(@.name = '李狗蛋')].age","24");
具体其他语法的使用还在学习中。。。。