在我的代码中,我获取了我朋友服务器的所有数据库并将其打印在日志中。 现在我想要做的就是把他发给我的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。
答案 0 :(得分:2)
您的Retrofit
来电应与User
类Call<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。