Аннотация Джексона @JsonUnwrapped игнорирует значение @JsonProperty - PullRequest
0 голосов
/ 10 сентября 2018

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

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"}
, и я бы ожидал, что
{"postcode":"45678"}

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Аннотируя поле с помощью @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;
    }
}
0 голосов
/ 10 сентября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...