2015-06-08 2 views
1

У меня проблема с 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; 
    } 

} 

Где моя вина?

ответ

1

Проблема была решена.

Были конфликты зависимостей, потому что все библиотеки с идентификатором группы

org.codehaus.jackson

Переехали на новый адрес.

com.fasterxml.jackson

Так просто удалить все зависимости org.codehaus.jackson из файла сборки и использовать com.fasterxml.jackson вместо

 Смежные вопросы

  • Нет связанных вопросов^_^