2013-08-07 16 views
9

Bir Map nesnesinde veri var ve bunu bir json biçiminde yazdırmak istiyorum. Ben Jackson kitaplığını kullanarak özel güzel yazıcı

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

DefaultPrettyPrinter

kullanarak çalıştı ama biçimi beklediğim değil. Böyle çıktıyı alıyorum:

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

Ben çıkışı böyle istiyorum:

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

burada bir simmilar soru var: http://stackoverflow.com/questions/6176881/how-do-i-make-jacksons-build-method-pretty-print-its-json-output (NOT Benim görüşüme bir kopya) size yardımcı olabilir – morgano

+0

Bunu gördüm ama sorunu çözmez. Sonraki satırda baskı dizisi değerlerine ihtiyacım var. – Manisha

+1

Benzer soru: http://stackoverflow.com/questions/17411586/jackson-json-not-formatting-correctly/17415099 –

cevap

13

Sen Dizi Değerler önce girinti gerekir. Temel olarak bir satır besleme ve ardından 2 boşluk ekleyeceğiniz Lf2SpacesIdenter nesnesini ayarlamak için indentArraysWith yöntemini kullanabilirsiniz. Bu, sorununuzu çözebilir.

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

Lf2SpacesIndenter, DefaultPrettyPrinter.Lf2SpacesIndenter Yapıcı ve örnek alanı kullanımdan kaldırılmıştır. Kullanın: pp.indentArraysWith (DefaultIndenter.SYSTEM_LINEFEED_INSTANCE); – djb

İlgili konular