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);
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM