【发布时间】:2014-07-25 19:13:55
【问题描述】:
我正在使用 Retrofit 实现一个 Rest Client,但在尝试将响应正文转换为我的模型对象时遇到了一些麻烦。
我的界面中有以下内容:
@POST("/users")
void createUser(@Body RegisterUserToken token, Callback<User> callback);
我的User 类基本上是一个 POJO:
public class User {
private int id;
private String username;
private String email;
private String language;
// getters and setters...
}
这就是我使用 Rest Client 的方式:
restClient.createUser(token, new Callback<User>() {
@Override
public void success(User user, Response response) {
// ...problem is here, with the user object
}
@Override
public void failure(RetrofitError error) {
// ...
}
});
我遇到的问题是响应正文没有被转换为User 对象。我很确定问题是服务器正在返回:
{"user":{"id":13,"username":"john","email":"john@gmail.com","language":"eng"}}
不仅仅是:
{"id":13,"username":"john","email":"john@gmail.com","language":"eng"}
鉴于我无法真正修改服务器代码,如何自定义 Retrofit/GSON 以将此响应正文正确转换为我的用户对象?
【问题讨论】:
-
打印出来的数据是什么样子的?
-
我只是得到一个空的用户对象(这个对象的所有字段都初始化为其默认值)。
-
不使用用户对象,而是使用字符串并将其打印出来。这样你可以找出问题是在你端还是在服务器端
-
如果您不知道如何将其打印为字符串,请参阅此答案stackoverflow.com/a/24964462/1167780
-
谢谢,但我想避免在响应回调中手动处理 GSON,但我想我真的别无选择,对吧?哈
标签: android android-networking retrofit