java - GSON在解析okHttp响应时返回null

标签 java android json gson

我正在尝试使用 Gson 解析 okHttp 响应。 这是 JSON 响应:

{
    "code": 200,
    "message": "\u0423\u0441\u043f\u0435\u0448\u043d\u043e.",
    "data": {
        "id": "14",
        "name": "",
        "sname": "",
        "phone": "9274036079",
        "email": "",
        "org_name": "",
        "is_entity": "0",
        "city_name": "",
        "franchise_id": "0",
        "inn": "",
        "type_id": "2",
        "inviter_id": "0",
        "activate": "0000-00-00 00:00:00",
        "create": "2016-03-09 13:43:05",
        "necessities": {
            "needly_profile": true,
            "needly_vehicle": true
        },
        "access": {
            "user_set": true
        },
        "inviter_name": ""
    }
}

这是请求和解析响应的方法

private void requestUser(String token) {
    final Request request = new Request.Builder()
        .url("http://sapron.uveee.ru/api/user/get")
        .header("Authorization", token)
        .build();

    client.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            Log.i("FAILURE", e.toString());
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            Gson gson = new GsonBuilder().create();
            Log.i("test", "onResponse: "+gson.fromJson(response.body().charStream(), User.class).getUserdata()); //HERE WE CRASH
        }
    });
}

我的模型类

public class User {
    int code;
    String message;
    UserData data;

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    public UserData getUserdata() {
        return data;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public void setUserdata(UserData data) {
        this.data = data;
    }
}

用户数据类

    public class UserData {

    String id,name,sname,phone,email,org_name,is_entity,city_name,franchise_id,inn,type_id,inviter_id,activate,create,inviter_name;
    boolean can_change;
    UserNecessities necessities;
    UserAccess userAccess;

    public String getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    public String getSname() {
        return sname;
    }
    public String getPhone() {
        return phone;
    }
    public String getEmail() {
        return email;
    }
    public String getOrg_name() {
        return org_name;
    }
    public String getIs_entity() {
        return is_entity;
    }
    public String getFranchise_id() {
        return franchise_id;
    }
    public String getInn() {
        return inn;
    }
    public String getType_id() {
        return type_id;
    }
    public String getInviter_id() {
        return inviter_id;
    }
    public String getActivate() {
        return activate;
    }
    public String getCreate() {
        return create;
    }
    public String getInviter_name() {
        return inviter_name;
    }
    public boolean isCan_change() {
        return can_change;
    }

    public UserNecessities getNecessities() {
        return necessities;
    }

    public String getCity_name() {
        return city_name;
    }
    public UserAccess getUserAccess() {
        return userAccess;
    }
    public void setUserAccess(UserAccess userAccess) {
        this.userAccess = userAccess;
    }
    public void setId(String id) {
        this.id = id;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public void setOrg_name(String org_name) {
        this.org_name = org_name;
    }
    public void setIs_entity(String is_entity) {
        this.is_entity = is_entity;
    }
    public void setFranchise_id(String franchise_id) {
        this.franchise_id = franchise_id;
    }
    public void setInn(String inn) {
        this.inn = inn;
    }
    public void setType_id(String type_id) {
        this.type_id = type_id;
    }
    public void setInviter_name(String inviter_name) {
        this.inviter_name = inviter_name;
    }
    public void setInviter_id(String inviter_id) {
        this.inviter_id = inviter_id;
    }
    public void setCreate(String create) {
        this.create = create;
    }
    public void setActivate(String activate) {
        this.activate = activate;
    }
    public void setNecessities(UserNecessities necessities) {
        this.necessities = necessities;
    }
    public void setCan_change(boolean can_change) {
        this.can_change = can_change;
    }
    public void setCity_name(String city_name) {
        this.city_name = city_name;
    }
}

我已经做了一些 GSON 解析,但我不明白我现在做错了什么。谢谢。

最佳答案

我不知道你的json数据是否正确。

但是你可以尝试一下,希望这对你有帮助

User user = new Gson().fromJson(response.body().charStream(), User.class);

关于java - GSON在解析okHttp响应时返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35901529/

相关文章:

java - 在 Java 中按日期查找最年轻和最年长的狗

java - 为另一个字符串的子字符串创建一个新的字符串是多余的吗?

java - 使用扫描仪创建对象标识符?

c# - 在 Activity 之间共享数据(字符串),保存并将其添加到ListView C#Xamarin

javascript - 如何从javascript中的两个json数组中获取不匹配的对象

java - hibernate :无法从数据库获取建议的身份策略列表。可能是 JDBC 驱动程序问题

java - 无法从 FacebookSDK 解析目标 'android-9'

java - 即使应用在线,也先查询 Firestore 离线数据

arrays - 按值删除 jsonb 数组元素

java - 使用 JAXB 将列表包装器转换为列表