我需要解析JSON文件并将数据放入HTML表格中。我为这个应用程序使用GWT,数据将从服务器端的文件中读取,并在页面加载时传递给客户端。是解析复杂的JSON文件
的文件中的一个JSONObjects的格式如下:
{
"Object 1": [
{ "value1": [ "subKey1", "subValue2" ], "value2": "val", "value3": { "key1": val1, "key2": val2, "key3": val3} },
{ "value2": [ "subKey1", "subValue2" ], "value2": "val", "value3": { "key1": val1, "key2": val2, "key3": val3} },
....
....
],
"Object 2": [
{ "value1": [ "subKey1", "subValue2" ], "value2": "val", "value3": { "key1": val1, "key2": val2, "key3": val3} },
{ "value2": [ "subKey1", "subValue2" ], "value2": "val", "value3": { "key1": val1, "key2": val2, "key3": val3} },
....
....
],
....
}
到现在为止,我只是做了简单的JSON解析。我在这里遇到的问题是我正在使用的数据具有每个对象的唯一名称,所以我似乎无法将它们解析为JSONObjects数组。
我试图解析它们(使用JSON简单)这种方式,但我抛出一个错误。
try {
JSONParser parser = new JSONParser();
JSONObject obj;
obj = (JSONObject) parser.parse(new FileReader("file.json"));
JSONArray array = new JSONArray();
array.add(obj.get("Object1"));
array.add(obj.get("Object2"));
array.add(obj.get("Object3"));
array.add(obj.get("Object4"));
JSONObject jo;
for (Object o : array) {
jo = (JSONObject) o;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
但是,这将引发一个错误:
org.json.simple.JSONArray cannot be cast to org.json.simple.JSONObject
从我的理解另一种方法是创建一个对象,但因为每个的JSONObject有不同标识的POJO类,这是否意味着每个对象必须它自己独特的课程?我使用的一些JSON2Java方法只是为它们中的每一个创建一个新类。
为什么不直接传递JSON的GWT应用程序?为什么解析它的服务器端? – 2015-04-01 11:33:57
那也是另一个选择,我只是想知道如何将数据结构化为表格。我想为数据做一个POJO会让它更容易。 – GreenGodot 2015-04-01 11:37:49
JSON _is_ JavaScript!在JavaScript中处理它比在Java中处理容易1000倍。好的,也许这有点夸张。但是在客户端免费解析**,因为它已经是JavaScript对象了 - 名字中的线索......我会从[阅读教程]开始(http://www.gwtproject.org/doc/latest /tutorial/JSON.html) - 覆盖类型真的很神奇。 – 2015-04-01 11:39:57