Saat ini saya memiliki contoh org.fasterxml.jackson.databind.ObjectMapper
dan ingin mendapatkan String
dengan JSON yang cantik. Semua hasil pencarian Google saya telah datang dengan Jackson 1.x cara melakukan ini dan saya tidak bisa menemukan cara yang tepat, tidak usang melakukan ini dengan 2.2. Meskipun saya tidak percaya bahwa kode mutlak diperlukan untuk pertanyaan ini, inilah yang saya miliki sekarang:
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
System.out.println("\n\n----------REQUEST-----------");
StringWriter sw = new StringWriter();
mapper.writeValue(sw, jsonObject);
// Want pretty version of sw.toString() here
SerializationConfig
sudah diselesaikan tetapiSerializationConfig.Feature
tidak. Ini tampaknya menjadi metode pencetakan cantik lainnya yang sudah usang kecuali saya kehilangan sesuatu. AdaFeature
kelas yang dipisahkan sendiri, tetapi tidak memilikiINDENT_OUTPUT
konstanta di dalamnya. :(Menurut mkyong , mantra sihir
defaultPrintingWriter
untuk cukup mencetak JSON :Versi yang lebih baru:
Versi yang lebih lama:
Sepertinya saya melompat sedikit dengan cepat. Anda dapat mencoba gson , yang konstruktornya mendukung pencetakan cantik :
Semoga ini membantu...
sumber
defaultPrettyPrintingWriter()
tidak lagi tersedia (bahkan sebagai metode usang) diObjectMapper
kelas.ObjectMapper.writerWithDefaultPrettyPrinter()
API jackson telah berubah:
sumber
new ObjectMapper().configure(SerializationFeature.INDENT_OUTPUT, true).writer().writeValueAsString(new HashMap<String, Object>());
. Anda hanya perlu memastikan untuk menggunakan penulis yang Anda dapatkan dari yang dikonfigurasiObjectMapper
.IDENT_OUTPUT tidak melakukan apa pun untuk saya, dan untuk memberikan jawaban lengkap yang berfungsi dengan stoples jackson 2.2.3 saya:
sumber
Jika Anda ingin mengaktifkannya secara default untuk SEMUA instance ObjectMapper dalam suatu proses, berikut ini adalah hack kecil yang akan menetapkan nilai default INDENT_OUTPUT menjadi true:
sumber
jika Anda menggunakan kombinasi pegas dan jackson, Anda dapat melakukannya sebagai berikut. Saya mengikuti @gregwhitaker seperti yang disarankan tetapi menerapkan gaya semi.
sumber
Jika orang lain yang melihat pertanyaan ini hanya memiliki string JSON (bukan di objek), maka Anda bisa memasukkannya ke dalam
HashMap
dan masih bisaObjectMapper
berfungsi. Theresult
variabel string JSON Anda.sumber
Coba ini.
sumber