解決jsonObject.put("key",null)時,值為null的屬性key會消失


問題描述:

返回json內容為:

{
  "success": true,
  "msg": "查詢成功!",
  "object": null
}

需要單獨取出object進行加密判斷,因為object取出來會變成一個“null”的字符串,所以在踩坑過程中發現,jsonObject.put("key",null)的時候,如果value值為null,那么object這個屬性值就會消失經過一頓百度,找到了如下辦法:

        String content = "{\n" +
                "  \"success\": true,\n" +
                "  \"msg\": \"查詢成功!\",\n" +
                "  \"object\": null\n" +
                "}";
        JSONObject jsonObject = JSONObject.parseObject(content);
        JSONObject objectOld = (JSONObject)jsonObject.get("object");
        jsonObject.put("object",objectOld);
        System.out.println("未加SerializerFeature.WriteMapNullValue——"+jsonObject);

        String s = JSONObject.toJSONString(jsonObject, SerializerFeature.WriteMapNullValue);
        System.out.println("加上SerializerFeature.WriteMapNullValue——"+s);

 

 

 顯而易見加上JSONObject.toJSONString(jsonObject, SerializerFeature.WriteMapNullValue)這個方法問題解決,但是我需要對這個null再進行加密的話,解密出來就會變成一個"null"字符串,最后采用了三元判斷的方法,也能寫入null

        jsonObject.put("object", object==null?null:加密內容);

這樣就不會影響到前端解密以后拿到的是null而不是"null"

同時附上百度到的Fastjson的SerializerFeature序列化屬性方法

QuoteFieldNames———-輸出key時是否使用雙引號,默認為true

WriteMapNullValue——–是否輸出值為null的字段,默認為false

WriteNullNumberAsZero—-數值字段如果為null,輸出為0,而非null

 


免責聲明!

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



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