2017-04-17 72 views
0

我試圖解析嵌套的JSON如下所示:解析嵌套的JSON拋出NullPointerException異常

{ 
    "a":{"aa":"11","bb":"232"}, 
    "b":{"aa":"111","bb":"224"}, 
    "c":{"aa":"121","bb":"232"} 
} 

我試圖使用循環去嵌套JSON部分:

JSONParser parser = new JSONParser(); 
JSONObject infoJSON = (JSONObject) parser.parse(new FileReader(new File("resources/abc.json")));     

for(int i=0 ;i< infoJSON.size(); i++){   
    JSONObject innerJSON = (JSONObject) infoJSON.get(i);    
    System.out.println(innerJSON.keySet()); 
} 

它拋出我NullPointerException。我覺得迭代有一些問題。

+0

它不是關於「空指針異常」。我的問題是爲什麼它不解析嵌套部分 – Betafish

+0

有時問題會被錯誤地關閉。你得到'null'是因爲'size()'代表了一個JSON對象的計數,它是一個'Map '本身,所以'get(i)'沒有意義(' 0「,只存在」a「,」b「和」c「)。這是你需要的:'JSONObject infoJson =(JSONObject)parser.parse(reader); for(Entry e:infoJson.entrySet()){JSONObject innerJson =(JSONObject)e.getValue();的System.out.println(innerJson.keySet()); }' –

+0

@LyubomyrShaydariv:你沒有發佈這個答案的任何原因? –

回答

-2

您的代碼循環用於會導致空指針的外部對象。 您的代碼應該看起來像:

JSONParser parser = new JSONParser(); 
     JSONObject infoJSON = (JSONObject) parser.parse(new FileReader(new File("resources/abc.json")));     
for(int j=0; infoJSON.size(); j++){ 
    for(int i=0 ;i< infoJSON.get(j).size(); i++){   
     JSONObject innerJSON = (JSONObject) infoJSON.get(j);    
     System.out.println(innerJSON.keySet()); 
    } 
} 
+0

顯然你沒有測試過,因爲它甚至沒有編譯。 –

+0

是的,@LukeWoodward,上面的建議沒有幫助。 – Betafish