2014-06-10 32 views
1

我在下面提到了回复代码。如何从ANDROID服务的HTTP响应中分别获取每个字符串?

switch(responseCode) { 
      case 200: 
      HttpEntity entity = response.getEntity(); 
       if(entity != null) { 
        String responseBody = EntityUtils.toString(entity); 
        Log.d("Responce", responseBody.toString()); 
       } 
       break; 
      } 

这个代码表示如下面的反应:

{"id":9,"name":"babu","role":5,"rights":"IsDelivery","result":"} 

欲每个值存储在单独的字符串。如Sting id = 3;Sting name = babu

请给我这个解决方案。

+0

尝试http://stackoverflow.com/questions/4307118/jsonarray-to-hashmap – iuq

+0

谢谢大家..它现在工作完美.. – user3608659

+0

你可能会解释什么为你工作:) – iuq

回答

2

你需要分析JSON响应,并将其存储到一些变量。对于例如假设你有一个类结构类似的后续 -

public class Person{ 
    public String id; 
    public String name; 
    public String role; 
    public String rights; 
    public String result; 
} 

然后您可以将响应值存储在这个类(如果你没有已经字符串变量)

的方法是如下 -

public Person parseResponse(String jsonString){ 
    Person person = new Person(); 
    JsonObject root = new JsonObject(jsonString); 
    person.id = root.getString("id"); 
    person.name = root.getString("name"); 
    person.role = root.getString("role"); 
    person.rights = root.getString("rights"); 
    person.result = root.getString("result"); 
    return person; 
} 

您可以直接保存这些值在你的成员变量,而不是将其保存到一个Person对象,但我更喜欢这种方式。 请记住,您需要在这里处理JsonException,因为如果json字符串中有任何错误,您的应用程序可能会崩溃。 PS:为了遵循封装,您需要将Person类的成员字段设置为私有,并为它们创建getter和setter。这里的代码只是为了给你提供这个想法。

0

尝试实现这一点:

String responseBody = EntityUtils.toString(entity); 


ArrayList<String> S = new ArrayList<String>(); 

    S = GenerateListCat(responseBody, tt); 

和GenerateListCat;

private <T> ArrayList<T> GenerateListCat(String result, Type y) { 

    ArrayList<T> retData = new ArrayList<T>(); 

    GsonBuilder gsonb = new GsonBuilder(); 
    Gson gson = gsonb.create(); 
    try { 
     JSONArray rslt = new JSONArray(result); 
     // Parse Response into our object 
     Type collectionType = y; 
     String tt = rslt.toString(); 
     List<T> lst = new Gson().fromJson(tt, collectionType); 

     for (T l : lst) { 
      retData.add(l); 
     } 

    } catch (Exception e) { 
     Log.d("Error: ", e.getMessage()); 
    } 

    return retData; 
} 
3

有2个选项:

更容易: 创建的钥匙作为属性的一类,像这样:

class MyEntity { 
    private int id; 
    private String name; 
    private int roles; 
    private String rights; 
    // ... other attributes; 

    // setters and getters and constructors? 
} 

然后使用Gson库(无论是这里https://code.google.com/p/google-gson/或maven仓库从Android Studio),并执行以下操作:

MyEntity myEntity = new Gson().fromJson(responseBody); 

使用JSONObject手动获取每个值:

JSONObject mainObject = new JSONObject(responseBody); 
int id = mainObject.getInt("id"); 
String name = mainObject.getString("name"); 
// .... 
相关问题