2011-11-07 48 views
0

http://pastebin.com/rXbeKqAa如何解析這個JSON到java對象?

大家好我一直在試圖上述JSON解析成一個Java程序,並將其存儲到一個對象......(不要有特定結構的時刻,只要我能得到從對象數據)

一直在嘗試使用GSON,但我似乎無法得到它的權利..

 String inputLine=""; 
    HttpClient httpclient= new DefaultHttpClient(); 
    HttpGet method = new HttpGet("http://localhost:3000/specs/215/errors.js"); 
    HttpResponse response =httpclient.execute(method); 
    BufferedReader in = new BufferedReader(
      new InputStreamReader(
        response.getEntity().getContent())); 

    inputLine = in.readLine(); 
    System.out.println(inputLine); 
    in.close(); 
    Gson gson = new Gson(); 
    JsonParser parser = new JsonParser(); 
    JsonArray array = parser.parse(inputLine).getAsJsonArray(); 

    for(int i=0; i < array.size(); i++) { 

     Errors e = gson.fromJson(array.get(0), Errors.class); 
     System.out.println(e.error.getReason()); 
    } 

和我得到的錯誤是:

Exception in thread "main" java.lang.IllegalStateException: This is not a JSON Array. 
    at com.google.gson.JsonElement.getAsJsonArray(JsonElement.java:99) 
    at test.Getter.main(Getter.java:37) 

任何人都請指點我正確的方向? 謝謝。

+0

(假設JSON實際上都在同一行上)。它不是一個數組,它是一個包含「errors」數組和「warnings」數組的對象。 –

回答

3

JSON字符串不是JSON數組字符串。 JSON字符串分別以{,}開頭和結尾,而JSON數組分別以[]開頭和結尾。

此行是錯誤的:

JsonArray array = parser.parse(inputLine).getAsJsonArray(); 

而檢索它作爲一個JsonObject

+0

太好了 - 謝謝! 先把它作爲jsonobject,然後把它作爲數組工作。 JsonObject jso = parser.parse(inputLine).getAsJsonObject(); \t JsonArray array = parser.parse(jso.get(「warnings」)。toString())。getAsJsonArray(); – user1033295

0

JSON結構實現爲對象,記錄,結構,字典,散列表,鍵控列表或關聯數組。

您可以使用eval()函數來實現所需的目標。 我認爲這會幫助你/

0

我解決了我的問題。與序列化註釋新手錯誤。出於某種原因,我認爲他們會引用類的名稱而不是字段名稱。但更重要的是,我還必須創建一個根級容器類來容納我的類。這可以解析所有的對象。