2012-05-29 10 views
20

我想從Web服務中檢索JSON並解析它。
我在正確的方式?如何將HttpEntity轉換爲JSON?

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

     if (entity != null) { 
      // parsing JSON 
     } 

    } catch (Exception e) { 
    } 

不幸的是,我不知道如何將HttpEntity轉換成JSONObject。

這是我的JSON(摘錄):

{ 
    "names": [ 
     { 
      "name": "Zachary" 
     }, 
     { 
      "name": "Wyatt" 
     }, 
     { 
      "name": "William" 
     } 
    ] 
} 

回答

49

您可以將字符串轉換爲JSON:

try { 
     response = httpclient.execute(httpget); 
     HttpEntity entity = response.getEntity(); 

     if (entity != null) { 
      String retSrc = EntityUtils.toString(entity); 
      // parsing JSON 
      JSONObject result = new JSONObject(retSrc); //Convert String to JSON Object 

      JSONArray tokenList = result.getJSONArray("names"); 
      JSONObject oj = tokenList.getJSONObject(0); 
      String token = oj.getString("name"); 
     } 
} 
catch (Exception e) { 
    } 
+0

它說'類型不匹配:不能從對象到String'轉換,所以我把它改成'字符串標記= (String)result.get(「token」);'。但不幸的是,當我嘗試'Log.d(「token」,token)時,我什麼都沒有收到;',儘管實體是'!= null',並且我有有效的JSON。 – user1170330

+0

好吧然後你可以張貼我你的json飼料鏈接bez它有可能你的json對象包含另一個JsonArray,那麼你需要先使用JSONArray,然後從數組中提取值 –

+0

請注意更新(JSON代碼)。 – user1170330

0

使用entity.getContent()來獲取InputStream和其轉換爲字符串。

0

試試這個

public String getMyFeed(){ 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpGet httpget = new HttpGet(url); 
    HttpResponse response = httpclien.execute(httpget); 

    HttpEntity entity = response.getEntity(); 
    HttpInputStream content = entity.getContent(); 

    StatusLine sl = response.getStatusLine(); 
    int statCode = sl.getStatusCode() 

    if (statCode ==200){ 

    // process it 

} 

} 


String readFeed = getMyFeed(); 
JSONArray jArr = new JSONArray(readFeed); 

for(int i=0 ; i<jArr.length ; i++) 
JSONObject jObj = jArr.getJSONObject(i);