2013-09-23 4 views
-1

У меня ошибка при попытке разобрать json. Не могли бы вы мне помочь? Я читаю json url, но это дает мне исключение, когда я пытаюсь разобрать json. Код:ошибка разбора Json с android

public String lecturaJsonTusPerlas() { 


    DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams()); 
    HttpPost httppost = new HttpPost("http://www.tvnotas.com.mx/rss/feed/tvn-horoscopo.json"); 
    // Depends on your web service 
    httppost.setHeader("Content-type", "application/json"); 

    InputStream inputStream = null; 
    String result = null; 
    try { 
     HttpResponse response = httpclient.execute(httppost);   
     HttpEntity entity = response.getEntity(); 

     inputStream = entity.getContent(); 
     // json is UTF-8 by default 
     BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8); 
     StringBuilder sb = new StringBuilder(); 

     String line = null; 
     while ((line = reader.readLine()) != null) 
     { 
      sb.append(line + "\n"); 
     } 
     result = sb.toString(); 
     return result; 

    } catch (Exception e) { 
     Log.d("DEFEKAS","EXCEPCION"); 

    } 
    finally { 
     try{if(inputStream != null)inputStream.close();}catch(Exception squish){} 
    } 
    return result; 

Для чтения JSON:

 JSONArray jsonArray2 = new JSONArray(lecturaJsonTusPerlas); 

     for (int i = 0; i < jsonArray2.length(); i++) { 
      JSONObject jsonObject = jsonArray2.getJSONObject(i); 

     String atr1 = null; 
     boolean var1 = jsonObject.getBoolean(atr1); 
     String atr2 = null; 
     int var2 = jsonObject.getInt(atr2); 
     String atr4 = null; 
     String var3 = jsonObject.getString(atr4); 
     } 

я вещь, что адрес JSON, потому что, когда я пытаюсь извлечь с расширением Chrome Google Я не имею никаких проблем.

+0

То, что вы получите это JSONObject 'JSONObject jb = new JSONObject (lecturaJsonTusPerlas)' – Raghunandan

+0

Пожалуйста, разместите трассировочную трассировку – Jon

ответ

1

Попробуйте

JSONObject jObject = new JSONObject(lecturaJsonTusPerlas); 

JSONArray jsonArray2 = jObject.getJSONArray("your array key"); 

     for (int i = 0; i < jsonArray2.length(); i++) { 
      JSONObject jsonObject = jsonArray2.getJSONObject(i); 

boolean var1 = jsonObject.getBoolean(atr1); 
int var2 = jsonObject.getInt(atr2); 
String var3 = jsonObject.getString(atr4); 

} 

не инициализировать значение строки нулевой.

1

Вы могли бы получать NullPointerException, потому что эти строки:

String atr1 = null; 
boolean var1 = jsonObject.getBoolean(atr1); 
String atr2 = null; 
int var2 = jsonObject.getInt(atr2); 
String atr4 = null; 
String var3 = jsonObject.getString(atr4); 

вы пытаетесь разобрать с «нулевой» ссылки. См. Atr1, atr2 и atr4; эти строки инициализируются нулевым значением.

0

Причина, по которой вы получаете эту ошибку, является вашим верхним узлом элемента json, а не объектом JSON Array.

Таким образом, чтобы начать разбор вам нужно написать что-то вроде этого

JSONObject jObject = new JSONObject(result); 
2

То, что вы получите это JSONObject

JSONObject jb = new JSONObject(lecturaJsonTusPerlas()); 

Ваш JSON выглядит, как показано ниже по ссылке вы использовали

{ // jsonobject node 
    "@attributes": { 
     "version": "2.0" 
    }, 
    "channel": { 
     "title": "TV Notas", 
     "link": "http://www.tvnotas.com.mx", 
     "description": "TV Notas - Horoscopos", 
     "pubDate": "Mon, 23 Sep 2013 2:30:12 -0500", 
     "generator": "http://www.tvnotas.com.mx", 
     "language": "es", 
     "item": [ // json array of item's 
      { 
       "title": "Acuario", 
       "link": "http://usa.tvnotas.com.mx/horoscopo/1-acuario/", 
       "pubDate": "Mon, 23 Sep 2013 02:30:12 -0500", 
       "category": "Horoscopo", 
       "guid": "http://www.tvnotas.com.mx/horoscopo/1-acuario/", 
       "description": "Si has sido soberbio con tus compañeros de trabajo o empleados, con familiares o amigos y no les has perdonado sus malos momentos, ahora se te presentará la oportunidad de estrechar lazos.", 
       "enclosure": { 
        "@attributes": { 
         "url": "http://www.tvnotas.com.mx/advf/imagenes/2013/01/50fdbd604f653_150x118.jpg", 
         "length": "3587", 
         "type": "image/jpeg" 
        } 
       }, 
       "elemento": "Aire", 
       "planeta": "Urano", 
       "signo_compatible": "Cáncer", 
       "signo_enemigo": "El excéntrico", 
       "numero": "25", 
       "arquetipo": "El Loco Sabio", 
       "arcangel": "Sakmakrel", 
       "color": "Verde", 
       "dia_suerte": "28" 
      }, 
      .... 

Чтобы разобрать

try { 
     JSONObject jb = new JSONObject(lecturaJsonTusPerlas()); 
     JSONObject job = jb.getJSONObject("channel"); 
     String channeltitle= job.getString("title"); 
     String channellink= job.getString("link"); 
     String channeldecription= job.getString("description"); 
     String channeldpubdate= job.getString("pubDate"); 
     String channeldgenerator = job.getString("generator"); 
     String channeldlanguage = job.getString("language"); 
     JSONArray jr = job.getJSONArray("item"); 

     for(int i=0;i<jr.length();i++) 
     { 
      JSONObject jb1 = (JSONObject) jr.get(i); 
      String title = jb1.getString("title"); 
          // similar for title link and others 
      JSONObject enclosure = jb1.getJSONObject("enclosure"); 
      JSONObject attributes= enclosure.getJSONObject("@attributes"); 
      String url = attributes.getString("url"); 
      Log.i("....",""+title); 
      String elemento= jb1.getString("elemento"); 
      // similar for others planeta.. 
     } 

     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
+0

Не может быть просто тогда. :) – Deepak

+0

@DeepakMalik спасибо. рад проглотить и надеюсь, что это полезно – Raghunandan

Смежные вопросы