2013-03-16 6 views
2

Android 앱에 필요한 데이터가있는 json 문자열을 반환하는 웹 시스템이 있습니다. 문자열은 아래와 같다 :JSON을 Java의 배열/객체에 매핑 - 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

시도 매개 변수 "단계" –

답변

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

전체 구문 분석 방법을 주셔서 감사합니다. 나는 이것이 결국 나에게 의미가 있다고 생각한다! –

+0

당신은 환영합니다, 좋은 코딩 :) –

2

,이 시도 : 대신에 "단계"의

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