Модернизация 2.0 / Джексон: исключение UnrecognizedPropertyException

Я пытаюсь использовать Retrofit 2.0 с парсером Джексона, но это не работает. Он не отображает значения в модели. Это дает мне исключение:

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: нераспознанное поле «total_count» (класс models.GitResult), не отмеченное как игнорируемое (3 известных свойства: «incompleteResults», «items», «totalcount»])
при [Источник: буфер ((буфер (okio.GzipSource@2235992))). InputStream (); строка: 1, столбец: 21] (через цепочку ссылок: models.GitResult ["total_count"])

Но ключевое значение в моей модели и в ответе json совпадает. Это модель:

private boolean incompleteResults;
private List<Item> items = new ArrayList<Item>();
private int totalcount;

ответ json это

{
    "incompleteResults": false,
    "items": [{
        "id": 748,
        "login": "tom",
        "score": 65.33592,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tom"
    }, {
        "id": 1,
        "login": "mojombo",
        "score": 41.894745,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/mojombo"
    }, {
        "id": 32314,
        "login": "tmcw",
        "score": 33.515797,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tmcw"
    }, {
        "id": 132166,
        "login": "tommcfarlin",
        "score": 33.515797,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tommcfarlin"
    }, {
        "id": 21292,
        "login": "twilson63",
        "score": 32.48973,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/twilson63"
    }, {
        "id": 85085,
        "login": "tomwhite",
        "score": 32.48973,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tomwhite"
    }, {
        "id": 132554,
        "login": "tmeasday",
        "score": 32.48973,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tmeasday"
    }, {
        "id": 175,
        "login": "tommorris",
        "score": 29.326323,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tommorris"
    }, {
        "id": 83974,
        "login": "Knio",
        "score": 29.326323,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/Knio"
    }, {
        "id": 39635,
        "login": "RandomEtc",
        "score": 28.428514,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/RandomEtc"
    }, {
        "id": 565,
        "login": "tomtaylor",
        "score": 28.428514,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tomtaylor"
    }, {
        "id": 391674,
        "login": "tvlooy",
        "score": 27.945265,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tvlooy"
    }, {
        "id": 667901,
        "login": "tomjakubowski",
        "score": 25.136848,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tomjakubowski"
    }, {
        "id": 945979,
        "login": "dribnet",
        "score": 25.136848,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/dribnet"
    }, {
        "id": 70727,
        "login": "waako",
        "score": 25.136848,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/waako"
    }, {
        "id": 59207,
        "login": "tomster",
        "score": 25.136848,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tomster"
    }, {
        "id": 238331,
        "login": "brow",
        "score": 24.367298,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/brow"
    }, {
        "id": 155977,
        "login": "ToJans",
        "score": 24.367298,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/ToJans"
    }, {
        "id": 379269,
        "login": "tomasperezv",
        "score": 24.367298,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tomasperezv"
    }, {
        "id": 438654,
        "login": "tejr",
        "score": 24.367298,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tejr"
    }, {
        "id": 3010,
        "login": "subblue",
        "score": 24.367298,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/subblue"
    }, {
        "id": 11125,
        "login": "almost",
        "score": 24.367298,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/almost"
    }, {
        "id": 1678,
        "login": "alltom",
        "score": 24.367298,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/alltom"
    }, {
        "id": 26691,
        "login": "tmilewski",
        "score": 24.367298,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tmilewski"
    }, {
        "id": 60826,
        "login": "rentalcustard",
        "score": 24.367298,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/rentalcustard"
    }, {
        "id": 163497,
        "login": "tomrittervg",
        "score": 24.367298,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tomrittervg"
    }, {
        "id": 75655,
        "login": "tomlokhorst",
        "score": 24.367298,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tomlokhorst"
    }, {
        "id": 1287,
        "login": "tomafro",
        "score": 24.367298,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tomafro"
    }, {
        "id": 8482,
        "login": "tominsam",
        "score": 24.367298,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tominsam"
    }, {
        "id": 881466,
        "login": "tommcc",
        "score": 24.010895,
        "siteAdmin": false,
        "type": "User",
        "url": "https://api.github.com/users/tommcc"
    }],
    "totalcount": 0
}

Модель предмета также сделана правильно. Он работает с GsonConverterFactory, но не работает с JacksonFactory.

Вот моя настройка клиента:

private static GitApiInterface gitApiInterface ;
    private static String baseUrl = "https://api.github.com" ;

    public static GitApiInterface getClient() {
        if (gitApiInterface == null) {

            OkHttpClient okClient = new OkHttpClient();
            okClient.interceptors().add(new Interceptor() {
                @Override
                public Response intercept(Chain chain) throws IOException {
                    Response response = chain.proceed(chain.request());
                    return response;
                }
            });

            Retrofit client = new Retrofit.Builder()
                    .baseUrl(baseUrl)
                    .client(okClient)
                    .addConverterFactory(rest.JacksonConverterFactory.create())
                    .build();
            gitApiInterface = client.create(GitApiInterface.class);
        }
        return gitApiInterface ;
    }

и мои зависимости от Gradle

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.squareup.retrofit:retrofit:2.0.0-beta4'
    compile 'com.squareup.okhttp:okhttp:2.4.0'
    compile 'com.squareup.retrofit:converter-gson:2.0.0-beta1'
    compile 'com.squareup.retrofit:converter-jackson:2.0.0-beta1'
    compile 'com.squareup.okhttp3:okhttp:3.0.0'
}

person Ganesh Jadhav    schedule 11.03.2016    source источник
comment
Первое, что я заметил, это то, что вы перепутали разные версии дооснащения и их преобразователи. Обратите внимание на модернизацию2, а не модернизацию в compile 'com.squareup.retrofit2:converter-jackson:2.0.0-beta4' и compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'.   -  person JJD    schedule 11.03.2016


Ответы (1)


В json у вас есть

общее количество

и в java у вас есть

общее количество

Вы должны использовать то же имя или использовать аннотацию @JsonProperty следующим образом:

@JsonProperty("total_count")
private int totalcount;
person amarkovits    schedule 21.03.2016