2012-05-29 15 views
20

Chcę odzyskać JSON z usługi sieciowej i przeanalizować go.
Czy jestem na dobrej drodze?Jak przekonwertować HttpEntity na 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) { 
    } 

Niestety nie wiem jak konwertować HttpEntity w JSONObject.

To mój JSON (wyciąg):

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

Odpowiedz

49

można przekonwertować ciąg JSON jako:

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

Mówi 'niezgodność typów: nie można przekonwertować od obiektu do String', więc zmieniłem go na' String znacznik = (String) result.get ("token"); '. Ale niestety nic nie otrzymuję, gdy próbuję 'Log.d (" token ", token);', mimo że encja to '! = Null' i mam prawidłowy JSON. – user1170330

+0

OK, możesz wysłać mi link do json, bez którego Twój obiekt Json może zawierać JsonArray, następnie najpierw użyj JSONArray, a następnie wypakuj wartość z tablicy –

+0

. Zwróć uwagę na aktualizację (kod JSON). – user1170330

0

Użyj entity.getContent(), aby uzyskać InputStream i przekonwertować go na String.

0

Spróbuj

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); 
Powiązane problemy