Разве @JsonTypeInfo не работает с ридером для обновления? - PullRequest
0 голосов
/ 15 января 2019

При попытке выполнить частичное обновление компонента ничего не меняется. Данный компонент использует @JsonTypeInfo, особенно с As.EXTERNAL_PROPERTY. При удалении позиции @JsonTypeInfo она корректно обновляется.

Я пробовал это как с настроенным Spring Джексоном, так и в отдельном проекте. У меня есть Git репо с ошибочным кодом. Если я использую As.PROPERTY вместо EXTERNAL_PROPERTY, это тоже работает.

    public class VehicleWithJsonTypeInfo {
        private String make;
        private String model;

        @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "make")
        @JsonSubTypes({
            @JsonSubTypes.Type(value = Diesel.class, name = "mercedes"),
            @JsonSubTypes.Type(value = Petrol.class, name = "toyota")
        })
        private Fuel fuel;

        // ... getters, setters and toString
    }

    public interface Fuel {
    }

    public class Petrol implements Fuel {
        private boolean leaded;
        // ... getters, setters and toString
    }

Это работает

    ObjectMapper mapper = new ObjectMapper();
    String make="toyota";
    String model="corolla";
    boolean leaded=false;
    String json="{\"make\": \""+make+"\", \"model\": \""+model+"\", \"fuel\":{\"leaded\": "+Boolean.toString(leaded)+"} }";
    VehicleWithJsonTypeInfo vehicle = mapper.readValue(json, VehicleWithJsonTypeInfo.class);

Это не обновляет компонент

    mapper.readerForUpdating(vehicle).readValue("{\"make\": \"ford\"}");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...