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

我想从第一个 json 响应中删除 [ 之前和之后 ] 的 " 符号,就像第二个响应一样(我注意到 " 是在将数组放入 jsonResponse 对象之后添加的)。我怎样才能做到这一点?

4

1 回答 1

1

由于您首先将“结果”转换为字符串,然后将其添加到 aaData,因此它最终会被引用,就像字符串一样。如果您只想删除引号,则可以在第 2 行执行以下操作:

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

这在第 8 行:

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

(当然,您需要选择“引用标记”##,这样它就不会在其他任何地方的数据中显示为实际的字符串内容)

但是更简洁的解决方案(虽然可能更慢)可能是将您的 String 转换为实际的 JSONObject,方法是将第 2 行更改为:

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