使用JSONPath快速读取和修改复杂JSON

这里使用的阿里巴巴的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");

具体其他语法的使用还在学习中。。。。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值