0

次のコードを実行しようとしました

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"}

2番目の応答と同じように、最初のjson応答から [ および ] の前の " 記号を削除したいと思います (配列が jsonResponse オブジェクトに配置された後に " が追加されていることに気付きました)。どうすればこれを達成できますか?

4

1 に答える 1

1

最初に「結果」を文字列に変換してから aaData に追加するため、文字列のように引用符で囲まれます。引用符を削除するだけの場合は、2 行目で次のようにすることができます。

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

そしてこれは8行目です:

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

(もちろん、データの実際の文字列コンテンツとして他の場所に表示されないように、「引用符」## を選択する必要があります)

しかし、よりクリーンな解決策 (おそらく遅くなりますが) は、2 行目を次のように変更して、String を実際の JSONObject に変換することです。

JSONObject json = new JSONObject(gson.toJson(result));
于 2012-10-29T17:02:52.587 に答える