从Google应用引擎创建JSON响应
问题描述:
纯粹作为学术练习,我想将我现有的GAE小程序之一转换为以JSON形式返回给Android的响应,并相应地解析它。从Google应用引擎创建JSON响应
包含一系列布尔的原始XML响应从而返回:
StringBuilder response = new StringBuilder();
response.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
response.append("<friend-response><added>");
response.append(friendAdded);
response.append("</added><removed>");
response.append(friendRemoved);
response.append("</removed><found>");
response.append(friendFound);
response.append("</found></friend-response>");
我想,看起来像这样的JSON响应,以取代本:
{ "friendResponse" : [ { "added":true, "removed":false, "found":true } ]}
我想我可以生成数组内容如下(我还没有测试过),但我不知道如何创建顶级friendResponse数组本身。我似乎无法找到任何使用com.google.appengine.repackaged.org.json库在Java中创建JSON响应的良好示例。任何人都可以帮助我走上正确的道路吗?
boolean friendAdded, friendRemoved, friendFound;
/* Omitted the code that sets the above for clarity */
HttpServletResponse resp;
resp.setContentType("application/json");
resp.setHeader("Cache-Control", "no-cache");
JSONObject json = new JSONObject();
try {
//How do I create this as part of a friendResponse array?
json.put("added", friendAdded);
json.put("removed", friendRemoved);
json.put("found", friendFound);
json.write(resp.getWriter());
} catch (JSONException e) {
System.err
.println("Failed to create JSON response: " + e.getMessage());
}
答
您需要使用JSONArray
创建(单件)阵列,将您的对象存储:
try {
JSONObject friendResponse = new JSONObject();
friendResponse.put("added", friendAdded);
friendResponse.put("removed", friendRemoved);
friendResponse.put("found", friendFound);
JSONArray friendResponseArray = new JSONArray();
friendResponseArray.put(friendResponse);
JSONObject json = new JSONObject();
json.put("friendResponse", friendResponseArray);
json.write(resp.getWriter());
} catch (JSONException e) {
System.err
.println("Failed to create JSON response: " + e.getMessage());
}
答
您可以使用GSON:https://sites.google.com/site/gson/gson-user-guide#TOC-Object-Examples
有了这个框架,你可以将对象序列化为json,反之亦然。