2013-08-07 11 views
9

Ich habe Daten in einem Map-Objekt und ich möchte es in einem JSON-Format drucken. Ich habe versucht, mit DefaultPrettyPrinterBenutzerdefinierte hübsche Drucker mit Jackson Bibliothek

aber das Format ist nicht das, was ich erwartet habe. Ich erhalte eine Ausgabe wie folgt aus:

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

I Ausgabe so wollen:

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

Es gibt eine simmilar Frage hier: http://stackoverflow.com/questions/6176881/how-do-i-make-jacksons-build-method-pretty-print-its-json-output (NICHT ein Duplikat meiner Meinung nach) das kann dir helfen – morgano

+0

Ich habe das gesehen, aber es löst das Problem nicht. Ich muss Array-Werte in der nächsten Zeile drucken. – Manisha

+1

Ähnliche Fragen: http://stackoverflow.com/questions/17411586/jackson-json-not-formatting-correctly/17415099 –

Antwort

13

Sie benötigen Einzug vor Array Werte. Sie können die Methode indentArraysWith verwenden, um das Objekt Lf2SpacesIdenter festzulegen, das im Wesentlichen einen Zeilenvorschub gefolgt von zwei Leerzeichen hinzufügt. Dies könnte Ihr Problem lösen.

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

Lf2SpacesIndenter ist bei DefaultPrettyPrinter.Lf2SpacesIndenter Der Konstruktor und das Instanzfeld sind veraltet. Verwenden Sie: pp.indentArraysWith (DefaultIndenter.SYSTEM_LINEFEED_INSTANCE); – djb

Verwandte Themen