2013-03-21 3 views
0

URL에서 json 항목을 구문 분석하려고합니다. 아래는 코드 세그먼트입니다.null 포인터 예외 json 구문 분석 url android

TextView txtViewParsedValue; 
private JSONObject jsonObject; 
private static String url = "https://www.dropbox.com/s/rhk01nqlyj5gixl/jsonparsing.txt?dl=1"; 
String strParsedValue = null; 
TextView txtViewParsedValue; 
private JSONObject jsonObject; 
private static String url = "https://www.dropbox.com/s/rhk01nqlyj5gixl/jsonparsing.txt?dl=1"; 
String strParsedValue = null;   

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    txtViewParsedValue = (TextView) findViewById(R.id.textview1); 

    try { 
     parseJSON(); 

    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

public void parseJSON() throws JSONException 
{  
    JSONParser jParser = new JSONParser(); 
    jsonObject = jParser.getJSONFromUrl(url); 

    JSONObject object = jsonObject.getJSONObject("student"); 

    JSONArray subArray = object.getJS ONArray("student"); 

    for(int i=0; i<subArray.length(); i++) 
    { 
     strParsedValue+="\n"+subArray.getJSONObject(i).getString("id").toString(); 
    } 

    txtViewParsedValue.setText(strParsedValue); 
} 

나는 학생의 모든 아이디의 추출 및 텍스트 뷰에서 그들을 인쇄 할. 그 null 포인터 예외를 제공합니다. 여러 게시물을 검색하여 시도했지만 시도하지 않았 으면 어떤 지침이든 큰 도움이 될 것입니다!

답변

3

studentJsonObject 대신 JsonArray이지만 JsonObject으로 지정하려고합니다. 로 파싱 코드를 변경 : 당신의 JSON 학생에 따라 때문에

JSONArray subArray =jsonObject.getJSONArray("student");//<<< get student JSONArray 
for(int i=0; i<subArray.length(); i++) 
    { 
    strParsedValue+= 
     "\n"+subArray.getJSONObject(i).getString("id").toString(); 
} 
+0

덕분에

변경이, 일! – bharath

+0

안녕하세요, 때때로 textview에 표시되며 연속 실행시 때때로 비어 있습니다. 인터넷 연결이 좋았습니다. – bharath

+0

@bharath : 서버에서 데이터를 가져올 때 AsyncTask를 사용하여 서버에서 데이터를 가져올 때 UI가 정지되는 것을 방지합니다. –

0

망가 JSONObject object = jsonObject.getJSONObject("student");를 사용하는 것은 배열입니다.

JSONArray subArray = jsonObject.getJSONArray("student");