如題,FastJson用的不熟,下面是一段代碼,resultStr是json字串,里面含有為null的欄位,轉換成JSONObject之后就沒那些為null的欄位了,請問怎么保留下來?
JSONObject jsonObject = JSON.parseObject(resultStr);
我這是沒有轉換為封裝好的class物件,因為resultStr里的結構是不確定的,所以都是使用JSONObject 來操作的!
說白了,就是要轉換為JSONObject 時怎么保留null欄位,求大神幫忙看看!
uj5u.com熱心網友回復:
parseObject方法有一個實作允許傳一個ParseProcess介面的實作作為引數,這個介面有一個子介面叫ExtraProcessor,它定義了一個方法叫processExtra,有三個引數是object, key和value......剩下的你懂的
uj5u.com熱心網友回復:
還望明示!
我也遇到這個問題了!weex框架只認fastjson,,這個processExtra 怎么才能解決JSON.parse(strJson);這個方法過濾掉null欄位?
uj5u.com熱心網友回復:
1樓的說法不滿足樓主的要求 我也遇到了這個問題,請問樓主解決了嗎uj5u.com熱心網友回復:
我也遇到了這個問題,請問樓主解決了嗎uj5u.com熱心網友回復:
JSONObject.toJSONString(jsonMap,SerializerFeature.WriteMapNullValue);uj5u.com熱心網友回復:
Map<String, Object> map = JSONObject.parseObject(respJson, new TypeReference<Map<String, Object>>() {});
這樣可以轉化為一個有null值的map,這樣就不用考慮值為null的key被抹除的問題了(太坑了!)
uj5u.com熱心網友回復:
6樓的解決方式,對于只有一層的json是有用的,但是如果有多層的話就不行了,比如有這么一個json字串:{"k1":1,"k2":2,"k3":null,"k4":{"k41":null,"k42":42},"k5":5}
用上面的方式轉換后的map結果是:
{k1=1, k2=2, k3=null, k4={"k42":42}, k5=5}
第一層中的k3會保留,第二層里的k41還是被抹除了。
uj5u.com熱心網友回復:
你可以分層啊 每層取出來都用那個方法決議uj5u.com熱心網友回復:
如果單個決議請參照五樓,如果整個專案需要決議null,則需要在專案啟動時初始化fastjson的Provider,添加SerializerFeature的策略為WriteMapNullValueuj5u.com熱心網友回復:
樓上的方式不是很好,因子我要先決議第一層,拿到value值在決議第二層。。。第一次決議NULL值屬性都已經過濾掉了,后面的決議就沒有任何意義了。。。我這邊的處理方式是:把欄位串的null替換成了某個特殊字符,這樣他就不是NULL值了,就可以全部決議了。
方法雖然簡單暴力,但這個也能解決問題,坐等有更好的實作方式。
uj5u.com熱心網友回復:
判斷一下,為null 就 賦成 “”uj5u.com熱心網友回復:
判斷一下,為null 就 賦成 “”uj5u.com熱心網友回復:
cn.hutool.json.JSONObject 用這個來做決議String string = jedisPoolUtil.get(split);
JSONObject Object = JSONUtil.parseObj(string);
Object.remove("clientIP");
return Result.Return(200, 1,JSONUtil.toJsonStr(Object));
Result類中這樣就可以了
public static String Return(int code, int total, String rst) {
String str="{\"CODE\":"+code+",\"TOTAL\":"+total+",\"RST\":"+rst+"}";
return str;
}
這樣前臺就可以拿到Json字串!
uj5u.com熱心網友回復:
參考:fastjson 轉換為json字串,保留null欄位
uj5u.com熱心網友回復:
使用com.alibaba.druid.support.json.JSONUtils.toJSONString(Object),先將物件裝換成字串,是保留null值的,然后想怎么用怎么用uj5u.com熱心網友回復:
在json轉換中,多數都是按照默認的序列化方式進行的,如果需要特殊處理,可以在轉換中使用SerializerFeature。例如:resultJson.toJSONString(SerializerFeature.WriteMapNullValue)轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/81180.html
標籤:Java相關
