如何从ANDROID服务的HTTP响应中分别获取每个字符串?

时间:2014-06-10 13:41:55

标签: android json parsing http httpresponse

我在下面提到了回复代码。

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":"}

我想将每个值存储在单独的String中。例如Sting id = 3; Sting name = babu

请给我解决方案。

3 个答案:

答案 0 :(得分:4)

有两个选项:

<强>更容易: 使用键作为属性创建一个类,如下所示:

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/或来自 Android Studio 的maven存储库),并执行以下操作:

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

<强>硬

使用JSONObject手动获取每个值:

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

答案 1 :(得分:2)

您需要解析JSON响应并将其存储到某些变量中。例如,假设您有类结构,如follow -

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。这里的代码只是为了给你一个想法。

答案 2 :(得分: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;
}