Аннотация @JsonSerialize не работает на геттерах с Джексоном - PullRequest
0 голосов
/ 21 декабря 2018

Вот класс-обертка, который я пытаюсь serailize

public class Wrapper {

    @JsonSerialize(contentUsing = ItemRowSerializer.class)
    private Map<String, ItemRow> foo;

    public Wrapper(Map<String, ItemRow> fooz) {
        foo = new HashMap<>(fooz);
    }

    public Map<String, ItemRow> getFoo() {
        return foo;
    }

    public void setFoo(Map<String, ItemRow> foo) {
        this.foo = foo;
    }
}

Вот как я его проверяю

 Wrapper w = new Wrapper(map);
 final String jsonResult = mapper.writeValueAsString(w);
 System.out.println(jsonResult);

Я вижу, что сериализатор применяется, однако у меня есть foo как корневой узел, а это не то, что мне нужно.

, поэтому я переместил аннотацию из поля в геттер

@JsonSerialize(contentUsing = ItemRowSerializer.class)
public Map<String, ItemRow> getFoo(){
  return foo;
}

Теперь я вызываю геттер при записи в маппер

 Wrapper w = new Wrapper(map);
    final String jsonResult = mapper.writeValueAsString(w.getFoo());
    System.out.println(jsonResult);

Я больше не вижу элемента foo, но сериализатор также не применяется.

...