从Google Application Engine创建JSON响应

时间:2011-09-23 12:02:03

标签: android json google-app-engine

纯粹作为一项学术练习,我想转换一个现有的GAE小程序,将响应返回给JSON中的Android并进行相应的解析。

返回了包含一系列布尔值的原始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());
}

2 个答案:

答案 0 :(得分:4)

您需要使用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());
}

答案 1 :(得分:0)

您可以使用GSON:https://sites.google.com/site/gson/gson-user-guide#TOC-Object-Examples

使用此框架,您可以将对象序列化为json,反之亦然。