2013-08-07 13 views
9

Ho dati in un oggetto Mappa e voglio stamparlo in un formato json. Ho provato a utilizzare DefaultPrettyPrinterStampante carina personalizzata con libreria Jackson

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

ma il formato non è quello che mi aspettavo. Io sono sempre in uscita in questo modo:

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

voglio output come questo:

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

C'è una domanda simmilar qui: http://stackoverflow.com/questions/6176881/how-do-i-make-jacksons-build-method-pretty-print-its-json-output (NON un duplicato a mio parere) che può aiutarti – morgano

+0

l'ho visto ma non risolve il problema. Ho bisogno di stampare i valori degli array nella riga successiva. – Manisha

+1

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

risposta

13

È necessario rientro prima di Valori Array. È possibile utilizzare il metodo Lf2SpacesIdenter per impostare l'oggetto Lf2SpacesIdenter che aggiungerà fondamentalmente un avanzamento riga seguito da 2 spazi. Questo potrebbe risolvere il tuo problema.

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

Lf2SpacesIndenter si trova su DefaultPrettyPrinter.Lf2SpacesIndenter Il costruttore e il campo istanza sono deprecati. Utilizzare: pp.indentArraysWith (DefaultIndenter.SYSTEM_LINEFEED_INSTANCE); – djb