最近在開發中遇到了這麼一個問題,我在構造一個Json字符串的時候,由於這個JSON字符串的一個屬性本身也是一個JSON字符串,所以在轉換成字符串的時候這個子JSON字符串中就帶了'\'反斜槓字符。導致後面傳參發送到接收方識別不了。由於我不想通過處理JSON字符串(直接把\替換成空串),而是直接傳進來就是正常的。經過一系列的嘗試,終於將其解決。
一、問題復現:
//子json串
JSONObject childJsonObj = new JSONObject();
childJsonObj.put("name", "ICBC");
childJsonObj.put("position", "BJ");
JSONObject jsonObj = new JSONObject();
jsonObj.put("name", "stalin");
jsonObj.put("old", "26");
jsonObj.put("sex", "man");
jsonObj.put("work", childJsonObj.toJSONString());
System.out.println(jsonObj.toJSONString());
結果如下:
圖片中顯示子JSON串中帶了反斜槓'\'
二、解決方式:
我們應該直接把子JSON的對象傳過去,而不是JSON字符串,否則會導致外層的JSON在轉字符串時對子字符串進行二次轉換,多加了反斜槓'\'。修改代碼如下:
//子json串
JSONObject childJsonObj = new JSONObject();
childJsonObj.put("name", "ICBC");
childJsonObj.put("position", "BJ");
JSONObject jsonObj = new JSONObject();
jsonObj.put("name", "stalin");
jsonObj.put("old", "26");
jsonObj.put("sex", "man");
jsonObj.put("work", childJsonObj);
System.out.println(jsonObj.toJSONString());
結果如下:
喜歡的朋友點點關注哦~~