Создание ответа JSON из Google Application Engine - PullRequest
1 голос
/ 23 сентября 2011

Чисто в качестве академического упражнения я хотел преобразовать один из моих существующих апплетов GAE, чтобы вернуть ответ обратно в Android в 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.Кажется, я не могу найти хороших примеров создания ответов JSON в Java с помощью библиотеки com.google.appengine.repackaged.org.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 ]

4 голосов
/ 23 сентября 2011

Вам необходимо использовать 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());
}
0 голосов
/ 23 сентября 2011

Вы можете использовать GSON: https://sites.google.com/site/gson/gson-user-guide#TOC-Object-Examples

С помощью этой структуры вы можете сериализовать объект в json и наоборот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...