fastjson修改json的值(转)

转自:

https://blog.csdn.net/lanying100/article/details/114578969

复制代码
public class Test {
    public static void main(String[] args) {
        // JSONObject字符串
        String jsonStr1 = "{\"name\":\"lanying\",\"age\":\"18\"}";
        // JSONObject对象
        JSONObject jsonObj = JSONObject.parseObject(jsonStr1);
        // 添加键值对
        jsonObj.put("score", 99);
        // 打印内容
        System.out.println(jsonObj.toJSONString()); // {"score":99,"name":"lanying","age":"1"}

        // ----------------------------------------

        // JSONArray字符串
        String jsonStr2 = "[{\"name\":\"lanying\",\"age\":\"18\"}]";
        // JSONArray对象
        JSONArray jsonArr = JSONObject.parseArray(jsonStr2);
        // 取出数组中第一个元素,并添加键值对
        jsonArr.getJSONObject(0).put("score", 99);
        // 打印内容
        System.out.println(jsonArr.toJSONString()); // [{"score":99,"name":"lanying","age":"1"}]
    }
}
复制代码

 上面的方法不错,但是如果想对比较深的一个路径进行修改或赋值 ,代码写的可能会比较冗长

其实fastjson提供了另外一个方法,可以很简单的实现我们的需求

jsonpath可以以字符串表达式的方式,对json子元素进行修改

复制代码
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSONPath;


public class Test2 {


    public static void main(String[] args) {
        
        JSONObject jsonObject = new JSONObject();
        JSONPath.set(jsonObject,"data.person","个人");
        JSONPath.set(jsonObject,"data.student[0].age","20");
        System.out.println(jsonObject);
    }

}
复制代码

 

posted @   Mars.wang  阅读(2121)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示