2013-08-07 31 views
9

Tôi có dữ liệu trong đối tượng Bản đồ và tôi muốn in nó ở định dạng json. Tôi đã thử sử dụng DefaultPrettyPrinterMáy in đẹp tùy chỉnh sử dụng thư viện Jackson

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

nhưng định dạng không phải là những gì tôi mong đợi. Tôi nhận được đầu ra như thế này:

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

Tôi muốn đầu ra như thế này:

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

Có một câu hỏi simmilar đây: http://stackoverflow.com/questions/6176881/how-do-i-make-jacksons-build-method-pretty-print-its-json-output (KHÔNG một bản sao trong quan điểm của tôi) có thể giúp bạn – morgano

+0

Tôi đã thấy điều đó nhưng nó không giải quyết được vấn đề. Tôi cần in các giá trị mảng trong dòng tiếp theo. – Manisha

+1

Câu hỏi tương tự: http://stackoverflow.com/questions/17411586/jackson-json-not-formatting-correctly/17415099 –

Trả lời

13

Bạn cần thụt đầu dòng trước Values ​​Array. Bạn có thể sử dụng phương thức indentArraysWith để đặt đối tượng Lf2SpacesIdenter về cơ bản sẽ thêm nguồn cấp dữ liệu theo sau là 2 dấu cách. Điều này có thể giải quyết vấn đề của bạn.

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

Lf2SpacesIndenter đang ở DefaultPrettyPrinter.Lf2SpacesIndenter Trường khởi tạo và trường mẫu không được chấp nhận. Sử dụng: pp.indentArraysWith (DefaultIndenter.SYSTEM_LINEFEED_INSTANCE); – djb