Как настроить преобразование тела ответа JSON в Retrofit?

Я использую Retrofit для реализации клиента 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) {
        // ...
    }
});

проблема в том, что тело ответа не преобразуется в

4 ответов


измените класс POJO следующим образом:

public static class User {
    UserData user;
}   

public static class UserData {
    private int id;
    private String username;
    private String email;
    private String language;
}

попробуйте использовать просто User. Чтобы получить фактический User объект, вы можете получить доступ к User объект с помощью клавиши "пользователь" на карте.

например:

@POST("/users")
void createUser(@Body RegisterUserToken token, Callback<Map<String, User>> callback);
    restClient.createUser(token, new Callback<Map<String, User>>() {
        @Override
        public void success(Map<String, User> map, Response response) {
            User user = map.get("user");
        }

        @Override
        public void failure(RetrofitError error) {
            // ...
        }
    });
}

GSON не удается проанализировать объект, потому что вы не получаете корневой (пользовательский) объект... Здесь вы найдете свой ответ https://stackoverflow.com/a/25505032/761668


вы можете использовать библиотеку Volley для вызова REST API, где вы можете легко настроить ответ.