Уровень класса JsonSerializable не требует регистрации в модуле, но метод уровня в Джексоне, почему так? - PullRequest
0 голосов
/ 20 декабря 2018

когда я вызываю этот метод

 @JsonSerialize(using = ItemRowSerializer.class )
    private ItemRow testItem(){
        return new ItemRow("abc", Arrays.asList("item1", "item2", "item3"));
    }

и пишу в маппер, это то, что я вижу

        String jsonResult =  new ObjectMapper().writeValueAsString(testItem());
        System.out.println(jsonResult);


{"id":"abc","items":["item1","item2","item3"]}

Обратите внимание, я НЕ зарегистрировал простой модуль, добавленный с помощью специального сериализатора к этомуmapper.

т.е.

SimpleModule module = new SimpleModule()
module.addSerializer(ItemRowSerializer.class)
mapper.register(module);

Однако, без регистрации, но с аннотацией уровня класса работает как ожидалось и дает вывод

{"abc":["item1","item2","item3"]}

Так как я передаю этоСериализованный объект по проводу, я не предпочитаю писать в маппер и отправлять строковое представление через.

как мне поступить?

для получения подробной информации о фактической реализации сериализатора, пожалуйста, обратитесь здесь

...