używam json-simple i muszę dość wydrukować dane JSON (aby były bardziej czytelne dla człowieka).
Nie udało mi się znaleźć tej funkcji w tej bibliotece. Jak to się zwykle osiąga?
java
json
pretty-print
json-simple
mabuzer
źródło
źródło
scriptEngine.eval("result = JSON.stringify(JSON.parse(jsonString), null, 2)");
GsonBuilder
, ponieważ używałemgson.toJson(object)
, po prostu musiałem zmienić instancję zGson gson = new Gson();
naGson gson = new GsonBuilder().setPrettyPrinting().create();
i mój kod nadal działał, ale całkiem wydrukowałem obiekt zamiast jednej linii.Kiedyś org.json wbudowanej metody pretty wydrukować dane.
Kolejność pól w JSON jest losowa według definicji. Konkretne zamówienie podlega implementacji parsera.
źródło
Wygląda na to, że GSON obsługuje to, chociaż nie wiem, czy chcesz przełączyć się z używanej biblioteki.
Z instrukcji obsługi:
źródło
Z Jacksonem (
com.fasterxml.jackson.databind
):Od: Jak włączyć ładny wydruk JSON (Jackson)
Wiem, że jest to już w odpowiedziach, ale chcę napisać to tutaj osobno, ponieważ są szanse, że masz już Jackson jako zależność, więc wszystko, czego potrzebujesz, to dodatkowy wiersz kodu
źródło
Jeśli używasz interfejsu API języka Java do implementacji przetwarzania JSON (JSR-353), możesz określić
JsonGenerator.PRETTY_PRINTING
właściwość podczas tworzeniaJsonGeneratorFactory
.Poniższy przykład został pierwotnie opublikowany na moim blogu .
źródło
Moja sytuacja jest taka, że mój projekt korzysta ze starszego parsera JSON (nie JSR), który nie obsługuje ładnego drukowania. Musiałem jednak wyprodukować ładnie wydrukowane próbki JSON; jest to możliwe bez konieczności dodawania dodatkowych bibliotek, o ile używasz Java 7 i nowszych wersji:
źródło
Ładne drukowanie z GSON w jednej linii:
Oprócz wstawiania jest to równoważne z przyjętą odpowiedzią .
źródło
Większość istniejących odpowiedzi albo zależy od biblioteki zewnętrznej, albo wymaga specjalnej wersji Java. Oto prosty kod do wydrukowania łańcucha JSON, tylko przy użyciu ogólnych interfejsów API Java (dostępny w Javie 7 dla wyższych wersji; chociaż nie wypróbowałem starszej wersji).
Podstawową ideą jest przełączanie formatowania na podstawie znaków specjalnych w JSON. Na przykład, jeśli zostanie zaobserwowane „{” lub „[”, kod utworzy nowy wiersz i zwiększy poziom wcięcia.
Oświadczenie: Testowałem to tylko dla niektórych prostych przypadków JSON (podstawowa para klucz-wartość, lista, zagnieżdżony JSON), więc może potrzebować trochę pracy dla bardziej ogólnego tekstu JSON, takiego jak wartość ciągu z cudzysłowami lub znaki specjalne (\ n, \ t itp.).
źródło
W jednej linii:
Biblioteka json-io ( https://github.com/jdereg/json-io ) to mała biblioteka (75 KB ) bez żadnych innych zależności niż JDK.
Oprócz ładnego drukowania JSON, możesz serializować obiekty Java (całe wykresy obiektów Java z cyklami) do JSON, a także wczytywać je.
źródło
Teraz można to osiągnąć dzięki bibliotece JSONLib:
http://json-lib.sourceforge.net/apidocs/net/sf/json/JSONObject.html
Jeśli (i tylko jeśli) używasz
toString(int indentationFactor)
metody przeciążonej , a nie standardowejtoString()
.Zweryfikowałem to w następującej wersji interfejsu API:
źródło
Zgodnie ze specyfikacjami JSON-P 1.0 ( JSR-353 ) bardziej aktualne rozwiązanie dla danego
JsonStructure
(JsonObject
lubJsonArray
) mogłoby wyglądać następująco:źródło
W JSONLib możesz użyć tego:
Z Javadoc :
źródło
Możesz użyć Gson jak poniżej
Z postu ładny wydruk JSON za pomocą Gsona
Alternatywnie możesz użyć Jacksona jak poniżej
Z postu Ładny druk JSON w Javie (Jackson)
Mam nadzieję, że to pomoże!
źródło
Za pomocą org json. Link referencyjny
Korzystanie z Gson. Link referencyjny
Korzystanie z Jacksona. Link referencyjny
Korzystanie z Genson. Link referencyjny .
źródło
To zadziałało dla mnie przy użyciu Jacksona:
źródło
mapper
wzięło?Możesz użyć małej biblioteki json
źródło
Underscore-java ma metodę statyczną
U.formatJson(json)
. Obsługiwanych jest pięć typów formatów: 2, 3, 4, tabulatory i compact. Jestem opiekunem projektu. Przykład na żywoWynik:
źródło