天天看點

JSON轉實體的一個小坑

剛入職的小碼農一個,開個部落格記錄一下平時遇到的一些問題解決方法 、小經驗技巧 和 新思路新想法QuQ

今天調試了半天的一個問題關于JSON轉實體

JSON 轉實體類A,A中字段不為String 時,如(Integer,BigDecimal)時,

JSON中的該字段值為“”,或根本沒有PUT進去時,轉換後為null(不是字元串null),再轉為JSON時,此字段就會消失,然後getString時就會報錯,

可在轉換實體類A後加判斷(null == A.getXX()),應有更好的方法歡迎補充

2018年3月6日15:31:03

補充一下:

例如傳過來的封包:{"name":"123","age":null}

轉實體(這個按照業務邏輯會由接收實體轉為發送實體)再用fastjson(将發送實體)轉json

Student stu = JSONObject.parseObject(aa.toJSONString(), Student.class);

(這裡就暫時用接收實體再轉回去,隻是做個例子)

String str= JSONObject.toJSONString(stu);

這時候的str就是:{"name":"123"}

發給其他程式getString的時候就可能報錯,還要判斷contains(key)

這時候可以用jackson将stu轉為json

String newStr= "";

try {

newStr= new ObjectMapper().writeValueAsString(stu);

} catch (JsonProcessingException e) {

e.printStackTrace();

}

這時候newStr就是:{"name":"123","age":null}

就可以解決問題了