2013-03-16 237 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");