为什么JSONParser不会删除“从键和值?

时间:2011-05-11 16:09:12

标签: gwt json

我有以下JSON-String:

{"locale":"de","strings":[{"key":"navigation.search","value":"Suchen"}]}

我尝试用这种方式解析它:

// parse the response text into JSON
String json = response.getText();
Window.alert(json);
JSONValue jsonValue = JSONParser.parseLenient("{\"locale\":\"de\",\"strings\":[{\"key\":\"navigation.search\",\"value\":\"Suchen\"}]}");
Window.alert(jsonValue.isObject().get("locale").toString());
JSONArray jsonArray = jsonValue.isObject().get("strings").isArray();
for (int i = 0; i < jsonArray.size(); i++) {
    Window.alert(jsonArray.get(i).isObject().get("key").isString() + " -> " + jsonArray.get(i).isObject().get("value").isString());
}

为什么在Window.alert()中有引号,我认为引号对于创建JSON是必不可少的。

顺便说一句,JSON是使用json.org Java-Classes:

创建的
PrintWriter w = new PrintWriter(System.err);
new JSONWriter(w)
     .object()
          .key("locale").value("de").key("strings").array().object().key("key").value("navigation.search").key("value").value("Suchen").endObject().endArray()
     .endObject();
w.flush();

1 个答案:

答案 0 :(得分:4)

我认为关键是使用stringValue方法。尝试:

  

jsonArray.get(i).isObject()。get(“value”)。isString()。stringValue()