我正在使用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;
}

09-10 07:23
查看更多