шаблон остальных сериализовать / десериализовать объекты карты с ключом variosu, парами значений - PullRequest
0 голосов
/ 02 апреля 2012

Я использую resttemplate с Джексоном для маршаллового / демаршаллового java / json-объектов. Какова будет лучшая стратегия для сериализации / десериализации

Карта, которая может содержать пары ключ-значение, так что ключи являются строками, а значения могут быть различными типами, например ArrayList пользовательских объектов

Я провел некоторые исследования на этом сайте и обнаружил использование @JsonAnyGetter @JsonAnySetter может быть использован в этой ситуации, но не был уверен, как десериализовать в контексте метода getforobject. Нужно ли было бы написать собственный httpmessageconverter выполнить десериализацию? Заранее спасибо.

1 Ответ

0 голосов
/ 21 декабря 2012

Предположим, у вас есть такой ответ:

{ key1: "something", key2: 3}

Вам понадобится DTO с полями:

class CustomResponse {
    private String key1;
    private long key2;
}

Убедитесь, что вы добавили геттеры и сеттеры для вышеуказанного.

Теперь сделайте ваш запрос:

restTemplate.postForObject(url, requestObject, CustomResponse.class);

Объект запроса может быть DTO, подобным приведенному выше, или просто использовать массивы и карты для создания объекта requestObject.

Вы должны добавить эту аннотацию к своим ответным DTO. Это гарантирует, что если в ответе есть поля, которые не отображаются в вашем DTO, они будут игнорироваться.

@JsonIgnoreProperties(ignoreUnknown = true)
...