2012-11-26 50 views
2

我希望有人能夠幫助我。 我試圖解析以下JSON文件:解析Android中Java的JSON數據

{"seminar":[ 
    {"categoryid": "1","cpe": "13","inventory":["Discussion","Value x","Value y" 
    ],"teachers": [ 
    { 
     "titel": "Dipl.-Ing.", 
     "company": "XY", 
     "name": "Test", 
     "id": "3", 
    } 
    ], 

},... 

我在...解析教師數據丟失

... 
private static final String TAG_teachers = "teachers"; 
private static final String TAG_TITLE = "title"; 

for(int i = 0; i < seminar.length(); i++){ 
    JSONObject c = seminar.getJSONObject(i); 
    ... 
    teachers = c.getJSONArray(TAG_DOZENTEN); 
    for(int z = 0; z < teachers.length(); z++){     
    JSONObject d = teachers.getJSONObject(z); 
    String title = d.getString(TAG_TITLE); 
    Log.d("JSONParsingActivity", title); 

我得到的錯誤System.err的(1010):組織.json.JSONException:值爲空 在類型爲org.json.JSONObject的教師$ 1無法轉換爲 JSONArray。

我做錯了什麼?據我所知,從JSON文檔中,教師是一個JSON數組而不是一個對象。有人能幫助我嗎?

+0

什麼是TAG_DOZENTEN? –

+1

答案似乎正確,但我也建議http://jsonlint.com/ –

回答

3

教師(在「3」之後)有一個額外的(尾隨)逗號。不允許在JSON中使用。刪除它,看看是否有幫助。

2

如果您的JSON是真正形式:

{ ... }, { ... }, { ... }, ... 

這是無效JSON

根外殼必須是單個對象(在{})或陣列(在[])。

如果你的意圖是發送一個對象數組,然後簡單地用方括號包住整個東西,使它成爲一個數組,並從中創建一個JSONArray對象。

所以它必須像這樣

[ { ... }, { ... }, { ... }, ... ] 

你還需要確保你不要;噸有額外的逗號,未閉合支架等使用JSONLint或其他類似的JSON格式檢查自己節省一些時間在尋找語法問題。

+0

非常感謝您的幫助!我的JSON代碼是有效的。這些錯誤發生的時候,我試圖縮短我的代碼這個平臺。 – user1854707

+0

打開了一個新問題,因爲我在這裏放了無效的json – user1854707