2013-03-16 324 views
2

我有一個web系統,它返回一個json字符串和我在Android應用中需要的數據。字符串如下:將JSON映射到Java中的數組/對象Android - Android

[ 
    {"id":1, 
    "title":"Remove ViRuSeS", 
    "tagline":"Remove ViRuSeS", 
    "body":"Body", 
    "image":"index.jpg", 
    "steps":[ 
      {"id":2, 
      "title":"Step 1", 
      "body":"Download Things!", 
      "position":1} 
      ] 
    } 
] 

它應該返回一個對象數組,其中一個對象的項目也是一個項目數組。

我對gson很熟悉,並且在過去得到了這個工作,但我總是不得不簡化我的數據到一個對象,這使得我最終必須進行多次調用以獲取數據。

有沒有好的方法來做到這一點,而無需將所有可能的值映射回類?

我最後的嘗試是,只是試圖讓事情簡單了這一點,並正在對這些線路的第二個得到一個NullPointerException

userDet = new JSONObject(string); 
JSONArray userDetJson = userDet.getJSONArray("Steps"); 
+1

嘗試參數「臺階」 – 2013-03-16 19:43:14

回答

5

將其更改爲「臺階」,而不是「步驟「,這將解決這個問題:

userDet = new JSONObject(string); 
JSONArray userDetJson = userDet.getJSONArray("steps"); 

全解析方法:

JSONArray mainArray = new JSONArray(json); 
for (int i = 0 ; i < mainArray.length() ; i ++) 
{ 
    JSONObject currentItem = array.getJSONObject(i); 
    String title = currentItem.getString("title"); 
    String body = currentItem.getString("body "); 
    .... 
    JSONArray currentItemStepsArray = currentItem.getJSONArray("steps"); 
    for (int j = 0 ; j < currentItemStepsArray.length() ; j ++) 
    { 
     .... 
    } 
} 
+0

謝謝你的完全解析法。我認爲這對我現在終於有意義了! – 2013-03-16 20:17:22

+0

歡迎你,有一個很好的編碼:) – 2013-03-16 20:20:20

2

這裏,試試這個:不是「步驟」

JSONArray topLevelArr = new JSONArray(json); 
JSONArray stepArr = topLevelArr.getJSONObject(0).getJSONArray("steps");