2012-12-13 110 views
0

我試圖解析this鏈接爲JSON,但總是收到錯誤無法轉換爲JSONOject。無法轉換爲JSONObject

我嘗試了一些樣本,將字符串轉換爲JSONObject,但沒有任何運氣。我不確定Inputstream的大小是否少於這麼多的數據。

HttpClient client = new DefaultHttpClient(); 
     // Perform a GET request to YouTube for a JSON list of all the 
     // videos by a specific user 

     //URI uri_ = new URI("https://gdata.youtube.com/feeds/api/playlists/2B3B8DDAE8F71C46?v‌​=2&alt=json"); 
     HttpUriRequest request = new HttpGet("https://gdata.youtube.com/feeds/api/playlists/2B3B8DDAE8F71C46?v%E2%80%8C%E2%80%8B=2&alt=json"); 
     // Get the response that YouTube sends back 
     HttpResponse response = client.execute(request); 


     // Convert this response into a readable string 
     String jsonString = StreamUtils.convertToString(response.getEntity().getContent()); 

     System.out.println("JSON:" + jsonString); 


     // Create a JSON object that we can use from the String 
     JSONObject json = new JSONObject(jsonString); 

將inputstream轉換爲字符串的代碼;

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

輸出字符串:

{"version":"1.0","encoding":"UTF-8","feed":{"xmlns":"http://www.w3.org/2005/Atom","xmlns$media":"http://search.yahoo.com/mrss/","xmlns$openSearch":"http://a9.com/-/spec/opensearchrss/1.0/","xmlns$gd":"http://schemas.google.com/g/2005","xmlns$yt":"http://gdata.youtube.com/schemas/2007","id":{"$t":"http://gdata.youtube.com/feeds/api/playlists/2B3B8DDAE8F71C46"},"updated":{"$t":"2012-11-22T17:11:53.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://gdata.youtube.com/schemas/2007#playlist"},{"scheme":"http://gdata.youtube.com/schemas/2007/tags.cat","term":"Bartle"},{"scheme":"http://gdata.youtube.com/schemas/2007/tags.cat","term":"Doo"},{"scheme":"http://gdata.youtube.com/schemas/2007/tags.cat","term":"Mumbles"}],"title":{"$t":"Mumbles","type":"text"},"subtitle":{"$t":"Bartle Doo!","type":"text"},"logo":{"$t":"http://www.youtube.com/img/pic_youtubelogo_123x63.gif"},"link":[{"rel":"alternate","type":"text/html","href":"https://www.youtube.com/playlist?list=PL2B3B8DDAE8F71C46"},{"rel":"http://schemas.google.com/g/2005#feed","type":"application/atom+xml","href":"https://gdata.youtube.com/feeds/api/playlists/2B3B8DDAE8F71C46"},{"rel":"http://schemas.google.com/g/2005#batch","type":"application/atom+xml","href":"https://gdata.youtube.com/feeds/api/playlists/2B3B8DDAE8F71C46/batch"},{"rel":"self","type":"application/atom+xml","href":"https://gdata.youtube.com/feeds/api/playlists/2B3B8DDAE8F71C46?alt=json&start-index=1&max-results=25"}],"author":[{"name":{"$t":"edbassmaster"},"uri":{"$t":"https://gdata.youtube.com/feeds/api/users/edbassmaster"}}],"generator":{"$t":"YouTube data API","version":"2.1","uri":"http://gdata.youtube.com"},"openSearch$totalResults":{"$t":25},"openSearch$startIndex":{"$t":1},"openSearch$itemsPerPage":{"$t":25},"media$group":{"media$content":[{"url":"http://www.youtube.com/p/PL2B3B8DDAE8F71C46","type":"application/x-shockwave-flash","yt$format":5}],"media$description":{"$t":"Bartle Doo!","type":"plain"},"media$thumbnail":[{"url":"http://i.ytimg.com/vi/6S7zwXGBiTE/default.jpg","height":90,"width":120,"yt$name":"default"},{"url":"http://i.ytimg.com/vi/6S7zwXGBiTE/mqdefault.jpg","height":180,"width":320,"yt$name":"mqdefault"},{"url":"http://i.ytimg.com/vi/6S7zwXGBiTE/hqdefault.jpg","height":360,"width":480,"yt$name":"hqdefault"}],"media$title":{"$t":"Mumbles","type":"plain"}},"yt$playlistId":{"$t":"PL2B3B8DDAE8F71C46"},"entry":[{"id":{"$t":"http://gdata.youtube.com/feeds/api/playlists/2B3B8DDAE8F71C46/PLaFx1lHMY9-c3iy7KngIxLbSSS_9OLXMd"},"published":{"$t":"2011-07-21T15:14:04.000Z"},"updated":{"$t":"1970-01-01T00:00:00.000Z"},"category":[{"scheme":"http://schemas.google.com/g/2005#kind","term":"http://gdata.youtube.com/schemas/2007#video"},{"scheme":"http://gdata.youtube.com/schemas/2007/categories.cat","term":"Comedy","label":"Comedy"}],"title":{"$t":"Mumbles at the Bassmaster Classic","type":"text"},"content":{"$t":"My official Face Book:\r\nhttp://www.facebook.com/pages/Ed-Bassmaster/259411429706\r\n\r\nMy T Shirts:\r\nhttp://www.districtlines.com/ed-bassmaster","type":"text"},"link":[{"rel":"alternate","type":"text/html","href":"https://www.youtube.com/watch?v=6S7zwXGBiTE&feature=youtube_gdata"},{"rel":"http://gdata.youtube.com/schemas/2007#video.responses","type":"application/atom+xml","href":"https://gdata.youtube.com/feeds/api/videos/6S7zwXGBiTE/responses"},{"rel":"http://gdata.youtube.com/schemas/2007#video.related","type":"application/atom+xml","href":"https://gdata.youtube.com/feeds/api/videos/6S7zwXGBiTE/related"},{"rel":"http://gdata.youtube.com/schemas/2007#mobile","type":"text/html","href":"https://m.youtube.com/details?v=6S7zwXGBiTE"},{"rel":"related","type":"application/atom+xml","href":"https://gdata.youtube.com/feeds/api/videos/6S7zwXGBiTE"},{"rel":"self","type":"application/atom+xml","href":"https://gdata.youtube.com/feeds/api/playlists/2B3B8DDAE8F71C46/PLaFx1lHMY9-c3iy7KngIxLbSSS_9OLXMd"}],"author":[{"name":{"$t":"edbassmaster"},"uri":{"$t":"https://gdata.youtube.com/feeds/api/users/edbassmaster"}}],"gd$comments":{"gd$fee 

請幫我解決這個問題。 謝謝, Yuvi

+0

您需要發佈您的相關代碼和錯誤logcat中爲我們能夠幫助你... – Sam

+0

發佈您的代碼或東西:) –

+1

也許它的編碼問題?你正在閱讀'iso-8859-1',而JSON數據自我描述爲:「編碼」:「UTF-8」 – micha

回答

0

在這個AnyTask類下載和解析JSON

private List<HashMap<String, String>> mapList = new ArrayList<HashMap<String, String>>(); 

    private InputStream is; 

    @Override 
      protected List<HashMap<String, String>> doInBackground(String... urls) { 

       try { 
        DefaultHttpClient httpClient = getNewHttpClient(); 
        HttpGet get = new HttpGet((String) urls[0]); 
        HttpResponse httpResponse = httpClient.execute(get); 
        HttpEntity httpEntity = httpResponse.getEntity(); 

        is = httpEntity.getContent(); 

        BufferedReader reader = new BufferedReader(new InputStreamReader(
          is, "iso-8859-1")); 
        StringBuilder sb = new StringBuilder(); 
        String line = null; 
        while ((line = reader.readLine()) != null) { 
         sb.append(line + "\n"); 
        } 
        is.close(); 
        JSONArray jsonArray = new JSONArray(sb.toString()); 
         for (int i = 0; i < jsonArray.length(); i++) { 
          JSONObject row = jsonArray.getJSONObject(i); 
          DowloadSpecificJson(row); 


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

       return mapList; 
      } 

    private void DowloadSpecificJson(JSONObject row) throws JSONException { 

     HashMap<String, String> map = new HashMap<String, String>(); 
map.put("id", row.getString("id")); 
      map.put("name", row.getString("name")); 
      map.put("img", row.getString("img")); 

mapList.add(map); 
} 
+0

你試過了嗎與鏈接,我提供..?我已經知道如何做JSON解析.... – Yuvi

0
String json = EntityUtils.toString(response.getEntity(), "UTF-8"); 
return new JSONObject(json); 
+0

沒有這個運氣,甚至嘗試與上面提供的鏈接。 – Yuvi

0

我有2.3同樣的問題,但在4.0它的罰款。 我一直在尋找解決方案。這很簡單 - 需要從字符串中刪除第一個符號,從url接收。

// Convert this response into a readable string 
String jsonString = StreamUtils.convertToString(response.getEntity().getContent()); 
jsonString = jsonString.substring(1); 
相關問題