2013-08-07 2 views
9

У меня есть данные в объекте Map, и я хочу напечатать его в формате json. Я попытался использовать DefaultPrettyPrinterПользовательский довольно принтер с использованием библиотеки Джексона

mapper.writerWithDefaultPrettyPrinter().writeValue(filePath, mapObject); 

но формат не то, что я ожидал. Я получаю такой вывод:

{ 
    "arrVals" : ["value-1","value-2"] 
} 

Я хочу вывод, как это:

{ 
    "arrVals" : [ 
    "value-1", 
    "value-2" 
    ] 
} 
+0

Существует simmilar вопрос здесь: http://stackoverflow.com/questions/6176881/how-do-i-make-jacksons-build-method-pretty-print-its-json-output (НЕ дубликат, на мой взгляд), который может вам помочь – morgano

+0

Я видел это, но это не решает проблему. Мне нужно печатать значения массива в следующей строке. – Manisha

+1

Аналогичный вопрос: http://stackoverflow.com/questions/17411586/jackson-json-not-formatting-correctly/17415099 –

ответ

13

Вы должен отступ перед массивом значений. Вы можете использовать метод indentArraysWith для установки объекта Lf2SpacesIdenter, который в основном добавит строку с последующим 2 пробелами. Это может решить вашу проблему.

DefaultPrettyPrinter pp = new DefaultPrettyPrinter(); 
pp.indentArraysWith(new Lf2SpacesIndenter()); 
mapper.writer(pp).writeValue(filePath, mapObject); 
+3

Lf2SpacesIndenter is по умолчаниюPrettyPrinter.Lf2SpacesIndenter Конструктор и поле экземпляра устарели. Использование: pp.indentArraysWith (DefaultIndenter.SYSTEM_LINEFEED_INSTANCE); – djb

Смежные вопросы