1

我在服务器端制作 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 库吗?

4

3 回答 3

5

您正在使用JSONObject JSONVAlue并且JSONArraytoString()方法应该为您提供对象的格式良好的 json 表示。

看 :

http://www.gwtproject.org/javadoc/latest/com/google/gwt/json/client/JSONObject.html#toString()

http://www.gwtproject.org/javadoc/latest/com/google/gwt/json/client/JSONValue.html#toString()

http://www.gwtproject.org/javadoc/latest/com/google/gwt/json/client/JSONArray.html#toString()

于 2013-07-24T14:36:18.483 回答
2

我建议您看一下GWT AutoBean 框架。它允许您通过网络发送对象而不直接接触 JSON。代码变得更短。

于 2013-07-25T09:41:54.093 回答
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。

于 2013-07-25T14:06:08.220 回答