У меня проблема с Jackson + Retrofit + Robospice
.
Я пытаюсь создать простой проект и получить данные из своего api.
Но когда obect отображается на карту Джексона, я получаю исключение.Аннотации Robospice и Jackson, кажется, игнорируются
> Caused by: > com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: > Unrecognized field "id" (class > com.crosp.solutions.malibushop.rest.model.SlideshowImage), not marked > as ignorable (6 known properties: "desiredHeight", "redirectUrl", > "imageUrl", "title", "desiredWidth", "slideId"])
Мой формат JSON заключается в следующем.
[{"id":"121","source":"some url","title":"Hello"},{"id":"120","source":"some url","title":"Girls"},{"id":"119","source":"some url","title":"Girl2"}]
Моего POJO
/**
* Created by crosp on 6/8/15.
*/
@JsonIgnoreProperties(ignoreUnknown=true)
public class SlideshowImage {
private String mImageUrl;
private String mRedirectUrl;
private String mTitle;
private int mSlideId;
private int mDesiredHeight;
private int mDesiredWidth;
public int getDesiredWidth() {
return mDesiredWidth;
}
public void setDesiredWidth(int desiredWidth) {
mDesiredWidth = desiredWidth;
}
public int getDesiredHeight() {
return mDesiredHeight;
}
public void setDesiredHeight(int desiredHeight) {
mDesiredHeight = desiredHeight;
}
public int getSlideId() {
return mSlideId;
}
@JsonProperty("id")
public void setSlideId(int slideId) {
mSlideId = slideId;
}
public String getTitle() {
return mTitle;
}
@JsonProperty("title")
public void setTitle(String title) {
mTitle = title;
}
public String getRedirectUrl() {
return mRedirectUrl;
}
public void setRedirectUrl(String redirectUrl) {
mRedirectUrl = redirectUrl;
}
public String getImageUrl() {
return mImageUrl;
}
@JsonProperty("source")
public void setImageUrl(String imageUrl) {
mImageUrl = imageUrl;
}
@SuppressWarnings("serial")
public static class List extends ArrayList<SlideshowImage> {
}
}
Как вы можете видеть аннотацию игнорировать неизвестные свойства присутствуют, но не используется объект картограф. Также есть аннотации для сопоставления поля объекта POJO с другим именем в json, но это все равно не влияет.
Кажется, что аннотация Джексона игнорируется.
Если поля имен точно так же, как и в ответе, все работает.
Сервис
public class RestRetrofitSpiceService extends RetrofitJackson2SpiceService {
private static final String API_SERVER_BASE_URL = "url api";
@Override
protected String getServerUrl() {
return API_SERVER_BASE_URL;
}
}
Где моя вина?