問題描述:
返回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