Аннотация джексона @jsonunwrapped игнорирует значение @jsonproperty

Вот очень простой сценарий, в котором я получил объект значения, который я хочу развернуть для сериализации. Использование настраиваемого сериализатора не вариант.

public class UnwrappedWithPropertyName {

    public static void main(String[] args) throws JsonProcessingException {

        final Address address = new Address(new Postcode("45678"));

        final ObjectMapper mapper = new ObjectMapper();

        System.out.println(mapper.writeValueAsString(address));
    }


    static class Address {

        @JsonUnwrapped
        @JsonProperty("postcode")
        private final Postcode postcode;

        Address(Postcode postcode) {
            this.postcode = postcode;
        }

        public Postcode getPostcode() {
            return postcode;
        }
    }

    static class Postcode {

        private final String value;

        Postcode(String value) {
            this.value = value;
        }

        public String getValue() {
            return value;
        }
    }
}

Это приведет к

{"value":"45678"}
and what I would expect is
{"postcode":"45678"}
0
0
596
2

Ответы 2

Переместите @JsonProperty("postcode") в private final String value;

это тоже не вариант. Я хочу использовать этот класс почтового индекса на другом объекте и хочу, чтобы родитель контролировал имя свойства. для одного API я хочу, чтобы почтовый индекс был zip, для другого post_code. Помещение этой аннотации в класс Postcode приведет к экспорту всегда как postcode

slawek 10.09.2018 11:48

Аннотируя поле с помощью @JsonValue, можно управлять именем такого поля из включающего класса.

static class Address {

    @JsonProperty("postcode")
    private final Postcode postcode;

    Address(Postcode postcode) {
        this.postcode = postcode;
    }

    public Postcode getPostcode() {
        return postcode;
    }
}

static class Postcode {

    @JsonValue
    private final String value;

    Postcode(String value) {
        this.value = value;
    }
}

Другие вопросы по теме