我需要解析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