W tej chwili mam wystąpienie org.fasterxml.jackson.databind.ObjectMapper
i chciałbym uzyskać plik String
z ładnym JSON. Wszystkie wyniki moich wyszukiwań w Google przyniosły Jackson 1.x sposoby zrobienia tego i nie mogę znaleźć właściwego, niezalecanego sposobu zrobienia tego w wersji 2.2. Chociaż nie uważam, że kod jest absolutnie niezbędny do tego pytania, oto, co mam teraz:
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
jest to rozwiązane, aleSerializationConfig.Feature
tak nie jest. Wydaje się, że jest to kolejna metoda ładnego drukowania, która również jest przestarzała, chyba że czegoś mi brakuje. IstniejeFeature
klasa, która jest oddzielona od siebie, ale nie ma w sobieINDENT_OUTPUT
stałej. :(Według mkyong , magiczne zaklęcie jest
defaultPrintingWriter
do całkiem wydrukować JSON :Nowsze wersje:
Starsza wersja:
Wydaje się, że odrobinę szybko skoczyłem z pistoletu. Możesz wypróbować gson , którego konstruktor obsługuje ładne drukowanie :
Mam nadzieję że to pomoże...
źródło
defaultPrettyPrintingWriter()
nie jest już dostępny (nawet jako przestarzała metoda) wObjectMapper
klasie.ObjectMapper.writerWithDefaultPrettyPrinter()
API jackson uległo zmianie:
źródło
new ObjectMapper().configure(SerializationFeature.INDENT_OUTPUT, true).writer().writeValueAsString(new HashMap<String, Object>());
. Musisz tylko upewnić się, że używasz programu zapisującego, który otrzymasz od skonfigurowanegoObjectMapper
.IDENT_OUTPUT nic nie zrobił dla mnie i aby dać pełną odpowiedź, która działa z moimi słoikami jackson 2.2.3:
źródło
Jeśli chcesz włączyć to domyślnie dla WSZYSTKICH instancji ObjectMapper w procesie, oto mały hack, który ustawi domyślną wartość INDENT_OUTPUT na true:
źródło
jeśli używasz kombinacji sprężyny i jackson, możesz to zrobić w następujący sposób. Śledzę @gregwhitaker zgodnie z sugestią, ale wdrażam w stylu wiosennym.
źródło
Jeśli inni, którzy widzą to pytanie, mają tylko ciąg JSON (nie w obiekcie), możesz umieścić go w a
HashMap
i nadalObjectMapper
działać.result
Zmienna jest ciąg JSON.źródło
Spróbuj tego.
źródło