десериализовать список целых чисел из json в java с помощью Jackson Object Mapper

У меня есть ответ json, как показано ниже:

{"IsValid":false,"ModelErrors":null,"ValidationErrors":[10000]}

класс модели:

public class ShipmentResponse {
    private boolean isValid;
    private ModelErrors modelErrors;
    private List<Integer> validationErrors = null;

Код Object Mapper:

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
ShipmentResponse shipmentResponse =  mapper.readValue((BufferedInputStream)response.getEntity(), ShipmentResponse.class);

Мне не удалось сопоставить validationErrors из json в java, т.е. validationErrors = null после синтаксического анализа. Я ожидаю validationErrors = {1000}, но не знаю почему? Я знаю, что мы можем использовать TypeReference для возврата массива или списка, но не вложенного внутри объекта данных.


person Sasi Kathimanda    schedule 14.02.2018    source источник
comment
Что вы имеете в виду, не смог? Что случилось?   -  person Sotirios Delimanolis    schedule 14.02.2018
comment
Как называются ваши сеттеры и геттеры? Вы аннотировали их с помощью @JsonProperty, чтобы они соответствовали имени верхнего регистра полей в JSON?   -  person Sotirios Delimanolis    schedule 14.02.2018
comment
Почему вы отключили FAIL_ON_UNKNOWN_PROPERTIES?   -  person shmosel    schedule 14.02.2018
comment
@SotiriosDelimanolis: я попробовал аннотацию JsonProperty, но все равно не повезло. У меня нет сеттера, но я скоро обновлю получатель в вопросе.   -  person Sasi Kathimanda    schedule 14.02.2018
comment
@shmosel: поскольку у меня больше значений, кроме упомянутых, в ответе могут появиться три параметра, и я хочу их игнорировать.   -  person Sasi Kathimanda    schedule 14.02.2018
comment
@shmosel Если у него есть один дескриптор свойства (получение или установка), он зарегистрирует свойство. Это свойство можно установить либо с помощью доступного установщика, либо с помощью поля с соответствующим именем.   -  person Sotirios Delimanolis    schedule 14.02.2018
comment
@SotiriosDelimanolis Ты прав, моя плохая.   -  person shmosel    schedule 14.02.2018


Ответы (1)


Попробуй это

    public class ShipmentResponse {

        @JsonProperty("IsValid")
        private boolean isValid;
        @JsonProperty("ModelErrors")
        private ModelErrors modelErrors;
        @JsonProperty("ValidationErrors")
        private List<Integer> validationErrors = null;
}

В общем, у вас есть несоответствие в именах ваших свойств и фактическом json (случай имеет значение)

person Antoniossss    schedule 14.02.2018