2013-08-07 46 views
9

我有一個地圖對象中的數據,我想打印它以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(NOT在我看來重複),可以幫助你 – 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在DefaultPrettyPrinter.Lf2SpacesIndenter 不建議使用構造函數和實例字段。使用: pp.indentArraysWith(DefaultIndenter.SYSTEM_LINEFEED_INSTANCE); – djb