使用使用fastjson中的中的JSONPath处理处理json数据的方法数据的方法
主要介绍了使用fastjson中的JSONPath处理json数据的方法,文中通过示例代码介绍的非常详细,对大家的学
习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
介绍介绍
fastjson 1.2.0之后的版本支持JSONPath。,可以在java框架中当作json对象查询语言(OQL)来使用。
常用常用API
public class JSONPath {
// 求值,静态方法
public static Object eval(Object rootObject, String path);
// 求值,静态方法,按需计算,性能更好
public static Object extract(String json, 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 arrayAdd(Object rootObject, String path, Object... values);
// 获取,Map的KeySet,对象非空属性的名称。数组、Collection等不支持类型返回null。
public static Set<?> keySet(Object rootObject, String path);
}
使用使用
准备json内容如下:
取值操作
Object rootName = JSONPath.eval(json,"$.name");
System.out.println(rootName);
Object rootArr = JSONPath.eval(json,"$.arr");
System.out.println(rootArr);
输出:
zpl
[{"name":"zpl0","id":0},{"name":"zpl1","id":1},{"name":"zpl2","id":2},{"name":"zpl3","id":3},{"name":"zpl4","id":4}]
判断操作
// 判断有没有id>2的内容
boolean isExist = JSONPath.contains(json,"$[id>0]");
System.out.println(isExist);
// 判断有没有id>6的内容
isExist = JSONPath.contains(json,"$[id>1]");
System.out.println(isExist);
输出
true
false
size操作
int size = JSONPath.size(json,"$.arr");
System.out.println(size);
输出
5
评论0