2011-09-23 51 views
1

纯粹作为学术练习,我想将我现有的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()); 
} 

回答

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()); 
}