使用gson

时间:2018-01-27 09:03:48

标签: android json gson

在我的代码中,我获取了我朋友服务器的所有数据库并将其打印在日志中。 现在我想要做的就是把他发给我的jsons转换成我称为User的自定义对象列表。

这是我的回复代码。最后的日志在我的日志中打印了我朋友的所有数据库。

public void onResponse(@NonNull Call call,@NonNull Response response) throws IOException {
            int i;
            int size;
            try (ResponseBody responseBody = response.body()){
                if(!response.isSuccessful()) throw new IOException("Unexpected code" + response);
                Headers responseheaders = response.headers();
                for(i = 0, size = responseheaders.size(); i < size; i++){
                    Log.d("TAG", responseheaders.name(i) + ": " + responseheaders.value(i));
                }
                Log.d("TAG","Mazal's DB -----> "+ responseBody.string());
            }
        }

这是我的自定义对象

public class User {
    private String name;
    private String password;

    public User(String name, String password) {
        this.name = name;
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

这就是我在之前提到的回复主体中所得到的:http://prntscr.com/i69gx8(响应时间更长......不能适应图片中的所有内容)

我想使用Gson,我想从响应中获取jsons,获取用户和密码并将它们转换为我称为User的对象列表或arraylist。

1 个答案:

答案 0 :(得分:2)

您的Retrofit来电应与UserCall<User>一致,然后在onResponse回调中,您将收到的不是原始类型,而是广义Response<User> 。然后使用response.body()方法获取User对象。

<强>更新

抱歉,我的不好,以为你在OkHttp上使用改装客户端。 在您的情况下,您应该反复收到对此User对象的响应,如此

Gson gson = new Gson();
Type userType = new TypeToken<ArrayList<User>>(){}.getType();
List<User> userList = gson.fromJson(response.body().toString(), userType);  

然后,您可以使用User对象执行任何操作。顺便说一下,我建议你使用OkHttp上的Retrofit。这是page