2011-10-07 44 views
0

我正在製作一個應用程序,其中我從服務器端收到一個字符串作爲響應。該響應以json編碼。現在,我的問題是如何做編碼的響應的JSON解析從服務器端進行解碼.. 我從歌廳服務器以下響應android:json解析解碼

[「[email protected]」,「[email protected]」 ,「facebook_514728069」]

它是以數組的形式出現的。我想將其解碼並在我的另一個活動中顯示爲textviws。 我使用下面的代碼:

      HttpClient client = new DefaultHttpClient(); 
       String getURL =  "http://www.ondamove.it/English/mob/profile_friends.php?email="+Login.eMailId+""; 
       HttpGet get = new HttpGet(getURL); 
       HttpResponse responseGet = client.execute(get); 
       HttpEntity resEntityGet = responseGet.getEntity(); 


      if (resEntityGet != null) 
      { 

      String s = EntityUtils.toString(resEntityGet); 
      System.out.println(s); 


      JSONArray ids = new JSONArray(s); 

      for(int i=0; i< ids.length(); i++){ 
        System.out.println(ids[]); //print each of the string in json array. 
      } 

,但它給我的錯誤: 類型的表達式必須是一個數組類型,但它決心JSONArray

如何解決這個問題。 任何人都可以幫助我嗎? 謝謝

回答

1

您可以使用JSONTokener解析例如JSON文件的迴應:

String json = "{" 
     + " \"query\": \"Pizza\", " 
     + " \"locations\": [ 94043, 90210 ] " 
     + "}"; 

JSONObject object = (JSONObject) new JSONTokener(json).nextValue(); 
String query = object.getString("query"); 
JSONArray locations = object.getJSONArray("locations"); 
+0

我該如何做到這一點我得到了服務器端的響應,我想說明一下 – ekjyot

+0

你必須得到服務器響應作爲一個字符串對象「String jsonResponseString = Sever。的GetResponse();」那麼你可以按照上面的描述進行解析。 – hakansaglam

0

GSON如果你只是想保持簡單。 Jackson流如果你需要原始速度。

或者你總是可以使用內置的JSON tools - 但我建議其他兩個之一。

1

得到的字符串

String jsonResponseString = Sever.getResponse(); 

JSONArray ids = new JSONArray(jsonResponseString); 

for(int i=0; i< ids.length(); i++){ 
     Log.i(TAG, ids[i]); //print each of the string in json array. 
} 
+0

我們的代碼是給如下因素的錯誤:類型的表達式必須是一個數組類型但它解析爲JSONArray – ekjyot

+0

你得到的響應不是json。它應該以'{'開頭。你能檢查一下嗎? –

+0

你能發佈你在字符串「s」中獲得的值嗎?我想看看它是否是json。 –