我有以下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();
答案 0 :(得分:4)
我认为关键是使用stringValue方法。尝试:
jsonArray.get(i).isObject()。get(“value”)。isString()。stringValue()