2017-08-17 26 views
1

我在閱讀Java中的Json文件時遇到了麻煩。如何從Java中的文件中讀取JSON - json.simple

這是這種格式與內容的JSON文件:

{ 
"id": "10", 
    "groups": [{ 
     "name": "text", 
     "questions": [{ 
      "value": "text" 
      "response": { 

      } 
     } 
    ]} 
]} 

我用Java做什麼:

JSONParser parser = new JSONParser(); 
Object obj = parser.parse(new FileReader("/test.json")); 
JSONObject j = (JSONObject) obj; 
System.out.println(j); 
String id = (String)j.get("id"); 
int idpart = Integer.parseInt(id); 
System.out.println("id :" + idpart);   


JSONArray lg = (JSONArray) j.get("groups"); 
Iterator i = lg.iterator(); 
while (i.hasNext()) { 
    JSONObject gobj = (JSONObject) i.next(); 
    String name = (String)gobj.get("name"); 
    System.out.println(name); 

    /** The problem start from here !**/ 
    JSONArray lq = (JSONArray) j.get("questions"); 
    Iterator it = lq.iterator(); 
    while (it.hasNext()) { 
     JSONObject qobj = (JSONObject) i.next(); 
     String idQuestion = (String)qobj.get("id"); 
     System.out.println(idQuestion); 
     //How to get responses ? 
    } 
} 

我的問題是如何從問題清單響應對象?

當我試圖讓對象的問題清單是這樣的:

JSONArray lq = (JSONArray) j.get("questions"); 
Iterator it = lq.iterator(); 
while (it.hasNext()) { 
    JSONObject qobj = (JSONObject) i.next(); 
    String idQuestion = (String)qobj.get("id"); 
    System.out.println(idQuestion); 
} 

它讓我錯誤:Null pointer
有人可以幫助我嗎?

+2

凌亂,不可讀的代碼。例外告訴你獲得NPE的行號。打開文本編輯器,顯示行號,轉到堆棧跟蹤引用的行,然後查看引用。其中一個是空的。通過調試器旋轉會告訴你比在這裏要求更快。 – duffymo

+0

使用:'j.getJsonArray(「questions」);'沒有演員而只是'(...)j.get(...);'。還有更好的功能,會給你正確的對象:http://docs.oracle.com/javaee/7/api/javax/json/JsonObject.html,所以鑄造是沒有必要的。 –

+0

@AndreKampling謝謝你的評論,但我使用org.json.simple所以getJsonArray(「」)不可能! – SaKH

回答

0

你必須從lgj 您使用迭代器獲取的問題,分配組對象爲gobj所以用它:

JSONArray lq = (JSONArray) gobj.get("questions"); 
+0

好的非常感謝,我會嘗試。 – SaKH