2013-03-21 4 views
0

Я пытаюсь разобрать json-запись с URL-адреса. Ниже приведен фрагмент кода.Исключительное исключение указателя json parsing 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); 
} 

Я хочу извлечь все идентификаторы студента и распечатать их в текстовом виде. Это дает исключение нулевого указателя. Искал несколько сообщений, связанных с этим, и попробовал их, но не работал, любое руководство было бы очень полезно!

ответ

3

student является JsonArray вместо JsonObject но вы пытаетесь получить его как JsonObject. изменить код синтаксического анализа, как:

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

Привет, он иногда отображается в текстовом режиме и иногда остается пустым на последовательных запусках, мои интернет-соединения хороши, любая идея для этого поведения? – bharath

+0

@bharath: используйте AsyncTask для получения данных с сервера, которые избегают замораживания пользовательского интерфейса при получении данных с сервера –

0

Dont использовать JSONObject object = jsonObject.getJSONObject("student");, потому что в соответствии с вашим JSON студента является массивом.

Изменить его

JSONArray subArray = jsonObject.getJSONArray("student"); 
Смежные вопросы