如何在GWT客户端创建JSON字符串?

时间:2013-07-24 14:28:55

标签: java json gwt org.json

我在服务器端创建JSON字符串。

JSONObject responseObject = new JSONObject();
    List<JSONObject> authorList = new LinkedList<JSONObject>();
    try {
        for (Author author : list) {
            JSONObject jsonAuthor = new JSONObject();
            jsonAuthor.put("name", author.getName());
            jsonAuthor.put("surname", author.getSurname());
            authorList.add(jsonAuthor);
        }
        responseObject.put("authors", authorList);
    } catch (JSONException ex) {
        ex.printStackTrace();
    }
    return responseObject.toString();

这就是我在客户端部分解析该字符串的方式。

List<Author> auList = new ArrayList<Author>();
    JSONValue value = JSONParser.parse(json);
    JSONObject authorObject = value.isObject();
    JSONArray authorArray = authorObject.get("authors").isArray();
    if (authorArray != null) {
        for (int i = 0; i < authorArray.size(); i++) {
            JSONObject authorObj = authorArray.get(i).isObject();
            Author author = new Author();
            author.setName(authorObj.get("name").isString().stringValue());
            author.setSurname(authorObj.get("surname").isString().stringValue());
            auList.add(author);
        }
    }
    return auList;

现在我需要改变双方的行动。我必须在客户端上编码为JSON并在服务器上解析它,但我无法看到如何在客户端上创建一个JSON字符串,以便在服务器上进一步解析。我可以使用标准GWT JSON库吗?

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:2)

我建议你看一下GWT AutoBean framework。它允许您通过网络发送对象,而不是直接触摸JSON。代码变短了。

答案 2 :(得分:2)

这就是我所做的:

List<Author> auList = new ArrayList<Author>();
JSONObject authorObject = new JSONObject(json);
JSONArray authorArray = authorObject.getJSONArray("authors");
if (authorArray != null) {
    for (int i = 0; i < authorArray.length(); i++) {
        JSONObject authorObj = authorArray.getJSONObject(i);
        Author author = new Author();
        author.setName((String) authorObj.getString("name"));
        author.setSurname((String) authorObj.getString("surname"));
        auList.add(author);
    }
}
return auList;

问题是我不知道如何正确使用JSONArray。