JSON in Java

Jackson Top

Ich habe gerade den neuen Learn Spring- Kurs angekündigt , der sich auf die Grundlagen von Spring 5 und Spring Boot 2 konzentriert:

>> Überprüfen Sie den Kurs

1. Übersicht

Das Arbeiten mit JSON-Daten in Java kann einfach sein , aber - wie fast alles in Java - gibt es viele Optionen und Bibliotheken, aus denen wir auswählen können.

Dieser Leitfaden soll Ihnen die Auswahl erleichtern und Ihnen ein solides Verständnis des Ökosystems vermitteln. Wir werden die gängigsten JSON-Verarbeitungsbibliotheken in Java diskutieren:

  • Jackson
  • Gson
  • json-io
  • Genson

Wir folgen einer einfachen Struktur für jede Bibliothek - zunächst einige nützliche Ressourcen für den Einstieg (sowohl hier auf Baeldung als auch extern). Dann gehen wir ein grundlegendes Codebeispiel durch , um zu sehen, wie die Arbeit mit der Bibliothek tatsächlich aussieht.

2. Popularität und grundlegende Statistiken

Beginnen wir zunächst mit einigen Statistiken als Proxy für die Popularität jeder Bibliothek:

2.1. Jackson

  • Maven-Verwendung: Datenbindung ( 2362 ), Kern ( 1377 )
  • Github Stars: 1457
  • Github-Gabeln: 585

2.2. Gson

  • Maven Verwendung: 1588
  • Github Stars: 2079
  • Github-Gabeln: 471

2.3. json-io

  • Maven Verwendung: 11
  • Github Stars: 129
  • Github Gabeln: 40

2.4. Genson

  • Maven Verwendung: 8
  • Github Stars: 67
  • Github Gabeln: 15

3. Jackson

Schauen wir uns als nächstes die beliebtesten an - Jackson. Jackson ist eine Mehrzweck-Java-Bibliothek zur Verarbeitung von JSON-Daten.

3.1. Nützliche Ressourcen

Hier sind einige offizielle Ressourcen für die Bibliothek:

  • Offizielles Jackson Wiki
  • Jackson auf Github

Auf Baeldung:

  • Jackson Tutorial
  • Jackson Date
  • Jackson JSON Ansichten
  • Ein Leitfaden zu Jackson Annotations
  • Jackson-Ausnahmen - Probleme und Lösungen
  • Jackson - Entscheide, welche Felder serialisiert / deserialisiert werden
  • Jackson - Bidirektionale Beziehungen
  • Jackson - Benutzerdefinierter Serializer
  • Jackson - Benutzerdefinierter Deserializer

Andere interessante Artikel:

  • Jackson JSON-Verarbeitungs-API im Java-Beispiel-Tutorial
  • Jackson - ObjectMapper
  • Jackson 2 - Java-Objekt in / von JSON konvertieren

3.2. Maven-Abhängigkeit

So verwenden Sie die Bibliothek: Hier ist die Maven-Abhängigkeit, die Sie Ihrer pom.xml hinzufügen können :

 com.fasterxml.jackson.core jackson-databind ${jackson.version} 

Beachten Sie, dass die neueste Version von Jackson derzeit 2.6.3 ist .

3.3. Einfaches Beispiel mit Jackson

Lassen Sie uns nun anhand eines einfachen Beispiels sehen, wie Jackson verwendet wird:

@Test public void whenSerializeAndDeserializeUsingJackson_thenCorrect() throws IOException{ Foo foo = new Foo(1,"first"); ObjectMapper mapper = new ObjectMapper(); String jsonStr = mapper.writeValueAsString(foo); Foo result = mapper.readValue(jsonStr, Foo.class); assertEquals(foo.getId(),result.getId()); }

Beachten Sie, dass:

  • ObjectMapper.writeValueAsString () wird zum Serialisieren von Object in JSON-Zeichenfolgen verwendet.
  • ObjectMapper.readValue () wird verwendet, um JSON-Zeichenfolgen in Java Object zu deserialisieren.
  • Beispiel für eine JSON-Ausgabe:
{ "id":1, "name":"first" }

4. Gson

Gson ist die nächste Java JSON-Bibliothek, die wir uns ansehen werden.

4.1. Nützliche Ressourcen

Hier sind einige offizielle Ressourcen für die Bibliothek:

  • Gson auf Github
  • Gson Benutzerhandbuch

Auf Baeldung:

  • Gson Serialization Kochbuch
  • Gson Deserialization Kochbuch

Andere interessante Artikel:

  • Gson-Ausschlussstrategie
  • Gson Custom Serializer / Deserializer
  • Java Gson + JSON Tutorial with Examples

4.2. Maven Dependency

 com.google.code.gson gson ${gson.version} 

Note that the latest version of Gson right now is 2.4.

4.3. Simple Example with Gson

Here is a simple example clarify how to use Gson to serialize/desrialize JSON:

@Test public void whenSerializeAndDeserializeUsingGson_thenCorrect(){ Gson gson = new Gson(); Foo foo = new Foo(1,"first"); String jsonStr = gson.toJson(foo); Foo result = gson.fromJson(jsonStr, Foo.class); assertEquals(foo.getId(),result.getId()); }

Note that:

  • Gson.toJson() is used to serialize Object to JSON
  • Gson.fromJson() is used to desrialize JSON to Java Object

5. Json-io

Json-io is a simple Java library to serialize/deserialize JSON.

5.1. Useful Resources

Here are some official resources for the library:

  • json-io on Google Code
  • json-io on Github

5.2. Maven Dependency

 com.cedarsoftware json-io ${json-io.version} 

Note that the latest version of json-io right now is 4.1.9.

5.3. Simple Example with json-io

Now, let's take a look at a simple example of using json-io:

@Test public void whenSerializeAndDeserializeUsingJsonio_thenCorrect(){ Foo foo = new Foo(1,"first"); String jsonStr = JsonWriter.objectToJson(foo); Foo result = (Foo) JsonReader.jsonToJava(jsonStr); assertEquals(foo.getId(),result.getId()); }

Note that:

  • JsonWriter.objectToJson() is used to serialize Object to JSON.
  • JsonReader.jsonToJava() is used to deserialize Json to Java Object.
  • Sample JSON output:
{ "@type":"org.baeldung.Foo", "id":1, "name":"first" }

6. Genson

Genson is a Java and Scala to JSON conversion library, providing full databinding and streaming.

6.1. Useful Resources

Here are some official resources for the library:

  • Genson Official website
  • Genson on Github
  • Genson User Guide
  • Genson JSON format for byte arrays

6.2. Maven Dependency

 com.owlike genson ${genson.version} 

Note that the latest version of Genson right now is 1.3.

6.3. Simple Example with Genson

Here's a simple example of working with the library:

@Test public void whenSerializeAndDeserializeUsingGenson_thenCorrect(){ Genson genson = new Genson(); Foo foo = new Foo(1,"first"); String jsonStr = genson.serialize(foo); Foo result = genson.deserialize(jsonStr, Foo.class); assertEquals(foo.getId(),result.getId()); }

Note that:

  • Genson.serialize() is used to serialize Object to JSON
  • Genson.desrialize() is used to deserialize JSON to Java Object

7. Conclusion

In diesem kurzen Übersichtsartikel haben wir die gängigsten JSON-Verarbeitungsbibliotheken in Java kennengelernt.

Jackson unten

Ich habe gerade den neuen Learn Spring- Kurs angekündigt , der sich auf die Grundlagen von Spring 5 und Spring Boot 2 konzentriert:

>> Überprüfen Sie den Kurs