Я разрабатываю приложение для Android. Я решил использовать библиотеку Square's Retrofit, которая соответствует моим требованиям. Однако я столкнулся с проблемой десериализации . Мой бэкэнд написан в Rails 4 с использованием драгоценного камня rails-api
. active-model-serializer
генерирует этот вид JSON (JSONs иметь корневой элемент):Использование Retrofit с Rails API
{"user":{"id":1,"name":"Saygun","github_url":"www.github.com/saygun" }}
Вот как я инициализировать retrofit
.
public class User {
private String mId;
private String mName;
private String mGithubUrl;
public String getId() {
return mName;
}
public void setId(String id) {
this.mId = id;
}
public String getName() {
return mName;
}
public void setName(String name) {
this.mName = name;
}
public String getGithubUrl(String url) {
this.mGithubUrl = url;
}
}
public interface RestService {
@GET("https://stackoverflow.com/users/{id}")
void getUser(@Path("id") int id, Callback<User> cb);
}
Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) .registerTypeAdapter(Date.class, new DateTypeAdapter()) .create();
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(BuildConfig.API_ENDPOINT)
.setLogLevel(RestAdapter.LogLevel.FULL)
.setRequestInterceptor(requestInterceptor)
.setConverter(new GsonConverter(gson))
.build();
RestService service = restAdapter.create(RestService.class);
service.getUser(1, new Callback<User>() {
@Override
public void success(User user, Response response) {
//User is null
}
@Override
public void failure(RetrofitError error) {
}
});
Есть ли кто-нибудь может показать мне, что я пропускаю. Почему retrofit
не может создать пользователя?
ли вы это решить? – fiyah