2011-10-07 94 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。 –