Как получить object writer как с красивой печатью, так и с представлением json из objectmapper?

#json #jackson #objectmapper

#json #джексон #objectmapper

Вопрос:

Мне нужно создать json как с pretty print, так и с использованием JsonView. Как сделать то же самое из jackson objectmapper? При попытке использовать оба свойства я получаю следующую ошибку.

Ошибка: метод writerWithDefaultPrettyPrinter() не определен для типа ObjectWriter .

Мой код:

 objectMapper.writerWithView(View.ConfigJson.class).writerWithDefaultPrettyPrinter().writeValue(file, value);
  

Ответ №1:

Самый простой способ — включить SerializationFeature.INDENT_OUTPUT на ObjectMapper :

 mapper.enable(SerializationFeature.INDENT_OUTPUT);
  

Или использовать withDefaultPrettyPrinter метод:

 mapper
    .writerWithView(View.ConfigJson.class)
    .withDefaultPrettyPrinter()
    .writeValue(System.out, map);
  

Вы должны заметить, что writer* методы объявляются в ObjectMapper экземпляре и возвращают ObjectWriter экземпляр. После этого вы можете использовать with* методы, которые объявлены в ObjectWriter .