如何在Retrofit中自定义响应体JSON转换?

Hen*_*que 7 android android-networking retrofit

我正在使用Retrofit来实现Rest Client,在尝试将响应体转换为模型Object时遇到了一些麻烦.

我的界面中有以下内容:

@POST("/users")
void createUser(@Body RegisterUserToken token, Callback<User> callback);
Run Code Online (Sandbox Code Playgroud)

我的User课基本上是一个POJO:

public class User {

    private int id;
    private String username;
    private String email;
    private String language;
    // getters and setters...
}
Run Code Online (Sandbox Code Playgroud)

这就是我使用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) {
        // ...
    }
});
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是响应主体没有被转换为User对象.我很确定问题是服务器正在返回:

{"user":{"id":13,"username":"john","email":"john@gmail.com","language":"eng"}}
Run Code Online (Sandbox Code Playgroud)

而不仅仅是:

{"id":13,"username":"john","email":"john@gmail.com","language":"eng"}
Run Code Online (Sandbox Code Playgroud)

鉴于我无法真正修改服务器代码,我如何自定义Retrofit/GSON以正确地将此响应主体转换为我的User对象?

Mub*_*een 8

像这样更改POJO类:

public static class User {
    UserData user;
}   

public static class UserData {
    private int id;
    private String username;
    private String email;
    private String language;
}
Run Code Online (Sandbox Code Playgroud)