2012-10-29 44 views
0

我曾嘗試下面的代碼來運行JSON與GSON相同嗎?

Gson gson = new Gson(); 
String json = gson.toJson(result); 
JSONObject jsonResponse = new JSONObject(); 
jsonResponse.put("sEcho", echo); 
jsonResponse.put("iTotalRecords", iTotalRecords); 
jsonResponse.put("iTotalDisplayRecords", iFilteredTotalRecords); 
jsonResponse.put("aaData", json); 
jsonResponse.toString(); 

JSONArray data = new JSONArray(); 
for (Object obj : result) { 
    JSONArray row = new JSONArray(); 
    User user = (User) obj; 
    row.put(user.getId()).put(user.getUserName()).put(user.isEnabled()); 
    data.put(row); 
} 
JSONObject jsonResponse2 = new JSONObject(); 
jsonResponse2.put("sEcho", echo); 
jsonResponse2.put("iTotalRecords", iTotalRecords); 
jsonResponse2.put("iTotalDisplayRecords", iFilteredTotalRecords); 
jsonResponse2.put("aaData", data); 
jsonResponse2.toString(); 

從兩個jsonResponse ToString函數的結果如下:

{"iTotalDisplayRecords":11,"iTotalRecords":11,"aaData":"[{\"creationTime\":0,\"enabled\":true,\"id\":1,\"loginDuration\":0,\"online\":false,\"password\":\"asda\",\"userName\":\"abiieez\"}]","sEcho":"1"} 

{"iTotalDisplayRecords":11,"iTotalRecords":11,"aaData":[[1,"abiieez",true]],"sEcho":"1"} 

我想之前[和後]從以消除「符號第一個JSON響應就像第二個(我注意到「在將數組放入jsonResponse對象後添加」)。我怎樣才能做到這一點?

回答

1

由於您首次將您的「結果」轉換爲字符串,然後將其添加到aaData,它將最終引用,就像字符串應該。如果你想要做的是去除報價,你可以做這樣的事情在第2行:

String json = "##" + gson.toJson(result) + "##"; 

,這在第8行:

jsonResponse.toString().replace("\"##", "").replace("##\"",""); 

(當然你需要選擇「引用標記」 ##,使得它不會出現在你的數據在其他地方)

實際字符串內容但是清潔的解決方案(雖然可能較慢)很可能會改變你的字符串轉換爲實際的JSONObject第2行至:

JSONObject json = new JSONObject(gson.toJson(result));