2015-04-07 3 views
-1

Мой массив JSON похож: [{"id": "1", "name": "ABC"}, {"id": "2", "name": «XYZ»}]Разбор массива объектов без основной клавиши индекса

И я хочу, чтобы он разбирался.

Я сделал это:

protected JSONObject doInBackground(String... args) 
{ 
    json = jParser.getJSONFromUrl(url); 
    //Log.e("JSON Data", json.toString()); 
    return json; 
} 

protected void onPostExecute(JSONObject json) 
{ 
    pDialog.dismiss(); 
    // Getting JSON Array from URL 
    mydataset = json.getJSONArray("data"); 
    Log.d("Till Here", mydataset.toString()); 
} 

Но «Till Здесь» не приходит в журнале, это означает, что я делаю что-то другое. Может кто-нибудь помочь?

+0

Пожалуйста, обратите внимание, что это пример из моего кода, чтобы избежать ненужных недоразумений и быть к-точке , – Harry

+1

Почему вы используете «попробовать»? – Maxouille

+0

Вы добавляете блок catch try. Получили ли вы что-нибудь в блоке catch – Amsheer

ответ

0
public static JSONArray getJSONfromURL(String url){ 
     InputStream is = null; 
     String result = ""; 
     JSONArray jArray = null; 

       HttpClient httpclient = new DefaultHttpClient(); 
       HttpGet httpget = new HttpGet(url); 
       HttpResponse response = httpclient.execute(httpget); 
       HttpEntity entity = response.getEntity(); 
       is = entity.getContent(); 

       BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
       StringBuilder sb = new StringBuilder(); 
       String line = null; 
       while ((line = reader.readLine()) != null) { 
         sb.append(line + "\n"); 
       } 
       is.close(); 
       result=sb.toString(); 

      jArray = new JSONArray(result);    
     return jArray; 
    } 

}  

protected JSONArray doInBackground(String... args) 
    { 
     json = jParser.getJSONFromUrl(url); 
     //Log.e("JSON Data", json.toString()); 
     return json; 
    } 

    protected void onPostExecute(JSONArray json) 
    { 
     pDialog.dismiss(); 
     try { 

        for (int i = 0; i < jsonArray.length(); i++) { 
         JSONObject jsobj = jsonArray.getJSONObject(i); 

         String id = jsobj.getString("id"); 

         String name = jsobj.getString("name"); 
         Log.e("MainActivity"," >>> id = " + id + " >> name = " +name); 

        } 
       } catch (JSONException e) { 
       } 
    } 
+0

Эта строка дает ошибку Свойства JSONArray = новый JSONArray (json); Мой результат - в переменной json. Он говорит сообщение Не удается разрешить конструктор – Harry

+0

Изменить тип возвращаемого значения jParser.getJSONFromUrl для JSONArray. –

+0

Это дает ошибку, не может метод разрешения. Я думаю, что в JSON Parser есть некоторая проблема. Не могли бы вы направить любой хороший анализатор JSON, если это так. Спасибо. – Harry

0

Я рекомендую вам использовать optJSONArray() mehod как

mydataset = json.optJSONArray("data"); 

поскольку должна быть окружена Try/уловом его оленья кожа, но вы должны быть осторожны о нуле.
Также мы не видим, что такое JSONObject json - это JSONObject или JSONArray? Если св второе, то ваш код является неправильным, так как вы должны работать JSONArray вместо JSONObject:

protected JSONArray doInBackground(String... args) 
{ 
    json = jParser.getJSONFromUrl(url); 
    Log.d("JSON Data", json.toString()); 
    return json; 
} 

protected void onPostExecute(JSONArray json) 
{ 
    pDialog.dismiss(); 
    // Got JSON Array from URL already 
    Log.d("b4 tHere", String.valueOf(json)); 
    mydataset = json; 
    Log.d("Till Here", String.valueOf(mydataset)); 
} 
Смежные вопросы