2013-12-14 177 views
-1

我有這樣一個奇怪的錯誤: 我試圖解析來自url的json對象。這完美的作品,例如這是JSON數據:奇怪的json空指針

{"type":"result","rid":"djoezradio", 
"data":[{ 
"title":"Webradio", 
"song":"Test", 
"track":{ 
"artist":"Test", 
"title":"Test", 
"album":"", 
"Test":422, 
"id":423, 
"playlist":{ 
"id":14,"title":"reggae" 
}, 
"imageurl":"http:\/\/example.com\/static\/example\/covers\/nocover.png"}, 
"bitrate":"128 Kbps", 
"server":"Online","autodj":"Online","source":"Yes","offline":false","listeners":1, 
"maxlisteners":500,"reseller":0,"serverstate":true,"sourcestate":true, 
"sourceconn":true,"date":"Dec 14, 2013", 
"time":"02:13 PM","url":"http:\/\/example.com\/"}]} 

這是我的代碼:

HttpClient client = new DefaultHttpClient(); 
    HttpGet request = new HttpGet(); 
    request.setURI(new URI("http://example.com")); 
    HttpResponse response; 
    try { 
     response = client.execute(request); 
     BufferedReader in = new BufferedReader(new InputStreamReader(response 
       .getEntity().getContent())); 
     String line = ""; 

     while ((line = in.readLine()) != null) { 

      JSONObject jObject = new JSONObject(line); 


       String temp = jObject.getString("imageurl"); 
       Log.e("rid",temp); 


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

當我做的getString(「播放列表」)爲例,它只是運行良好,它會返回編號:14等 不工作的唯一的東西是對象imageurl ... 當我想解析這個,它只是返回null,而它只是在那裏!

任何想法? 有什麼理由嗎?它因爲它的一個.jpeg?懇求分享,我真的陷入困境。

+2

你確定正確張貼JSON的?它有不平衡的大括號。 – Henry

回答

1

試試這個。

HttpClient client = new DefaultHttpClient(); 
HttpGet request = new HttpGet(); 
request.setURI(new URI("http://example.com")); 
HttpResponse response; 
try { 
    response = client.execute(request); 
    BufferedReader in = new BufferedReader(new InputStreamReader(response 
      .getEntity().getContent())); 

StringBuilder builder = new StringBuilder(); 
String line; 
while((line=in.readLine())!=null) 
{ 

    builder.append(line); 
} 
String JSONdata = builder.toString(); 
Log.i("JsonData",JSONdata); 

JSONObject jObject = new JSONObject(JSONdata); 


String temp = jObject.getString("imageurl"); 
Log.e("rid",temp); 

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

編輯

JSONObject jObject = new JSONObject(JSONdata); 

JSONArray jdata = jObject.getJSONArray("data"); 

JSONObject job = jdata.getJSONObject(0); 
JSONObject jObjt = job.getJSONObject("track"); 
String temp = jObjt.getString("imageurl"); 
Log.e("rid",temp); 
+0

thnx,但仍然可以解析任何對象,但imageurl ....仍然返回null。 Log.e(「JsonData」,JSONdata);顯示整個json數組,並在其中imageurl以及...仍然想知道爲什麼它返回null ..雖然它不是.. :( – iLuvCode

+0

@iLuvCode你需要從該JSON的數據是什麼,也發佈該響應也在log – Hariharan

+0

我需要的唯一數據是imageurl。當我做例如log.e(rid,jObject.getString(「playlist」))它只是起作用,但是當我想對imageurl做同樣的事情時,imageurl返回null,而值只是像播放列表 – iLuvCode