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は(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