我正在使用reformation来实现rest客户机,在尝试将响应体转换为模型对象时遇到了一些问题。
我的界面中有以下内容:
@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客户端的方式:
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"}
考虑到我不能真正修改服务器代码,我如何定制reformation/gson来正确地将这个响应体转换为我的用户对象?
最佳答案
像这样更改pojo类:
public static class User {
UserData user;
}
public static class UserData {
private int id;
private String username;
private String email;
private String language;
}