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 @ 2021-11-08 16:01  Mars.wang  阅读(1839)  评论(0编辑  收藏  举报