Как настроить преобразование тела ответа 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