2017-08-17 20 views
1

JavaのJsonファイルを読み込む際に問題が発生しています。JSONをJavaのファイルから読み込む方法 - json.simple

これは、この形式のコンテンツを持つJSONファイルです:私はJavaで

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

      } 
     } 
    ]} 
]} 

何をやった:

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 ? 
    } 
} 

私の質問は、質問リストからレスポンスオブジェクトを取得する方法ですか?

私はこのようなオブジェクトの質問のリストを取得しようとすると:Null pointer

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); 
} 

それは私にエラーを示しています!
誰かが私を助けることができますか?

+2

メッシー、読めないコード。例外は、NPEを取得する行番号を示します。テキストエディタを開き、行番号を表示し、スタックトレースによって引用された行に行き、参照を見ます。それらの1つはヌルです。デバッガを介してスピンすると、ここで質問するよりも速く伝えられます。 – duffymo

+0

'(...)j.get(...);'の代わりに 'j.getJsonArray(" questions ");'を使用します。正しいオブジェクト(http://docs.oracle.com/javaee/7/api/javax/json/JsonObject.html)を提供する優れた機能があるため、キャストは必要ありません。 –

+0

@AndreKamplingご意見ありがとうございますが、org.json.simpleを使用していますので、getJsonArray( "")は使用できません! – SaKH

答えて

0

あなたはそれを使用gobjにグループオブジェクトを割り当て、Iteratorを使用していないj からlgからの質問を取得する必要があります:

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

ありがとう、私はそれを試してみましょう。 – SaKH

関連する問題