JSON in Java

Jackson Top

Ik heb zojuist het nieuwe aangekondigd Leer de lente natuurlijk, gericht op de basisprincipes van Spring 5 en Spring Boot 2:

>> BEKIJK DE CURSUS

1. Overzicht

Werken met JSON-gegevens in Java kan eenvoudig zijn, maar - zoals bijna alles in Java - zijn er veel opties en bibliotheken waaruit we kunnen kiezen.

Deze gids zou die keuze gemakkelijker moeten maken en zou u op dit moment een goed begrip van het ecosysteem moeten geven. We bespreken de meest voorkomende JSON-verwerkingsbibliotheken in Java:

  • Jackson
  • Gson
  • json-io
  • Genson

We volgen een eenvoudige structuur voor elke bibliotheek - eerst enkele nuttige bronnen om aan de slag te gaan (zowel hier op Baeldung als extern). Dan gaan we eroverheen een eenvoudig codevoorbeeld, gewoon om te zien hoe het werken met de bibliotheek eruitziet.

2. Populariteit en basisstatistieken

Laten we eerst beginnen met enkele statistieken als een indicatie voor de populariteit van elke bibliotheek:

2.1. Jackson

  • Maven-gebruik: data-bind (2362), kern (1377)
  • Github-sterren: 1457
  • Github-vorken: 585

2.2. Gson

  • Maven-gebruik: 1588
  • Github-sterren: 2079
  • Github-vorken: 471

2.3. json-io

  • Maven-gebruik: 11
  • Github-sterren: 129
  • Github-vorken: 40

2.4. Genson

  • Maven-gebruik: 8
  • Github-sterren: 67
  • Github-vorken: 15

3. Jackson

Laten we vervolgens de meest populaire hiervan bekijken: Jackson. Jackson is een multifunctionele Java-bibliotheek voor het verwerken van JSON-gegevens.

3.1. Handige bronnen

Hier zijn enkele officiële bronnen voor de bibliotheek:

  • Officiële Jackson-wiki
  • Jackson op Github

Op Baeldung:

  • Jackson zelfstudie
  • Jackson Date
  • Jackson JSON-weergaven
  • Een gids voor Jackson-annotaties
  • Jackson uitzonderingen - problemen en oplossingen
  • Jackson - Bepaal welke velden worden geserialiseerd / gedeserialiseerd
  • Jackson - Bidirectionele relaties
  • Jackson - Aangepaste Serializer
  • Jackson - Aangepaste deserializer

Andere interessante beschrijvingen:

  • Jackson JSON-verwerkings-API in Java-voorbeeldzelfstudie
  • Jackson - ObjectMapper
  • Jackson 2 - Converteer Java-object van / naar JSON

3.2. Afhankelijkheid van Maven

Om de bibliotheek te gebruiken - hier is de Maven-afhankelijkheid om toe te voegen aan uw pom.xml:

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

Merk op dat de nieuwste versie van Jackson op dit moment is 2.6.3.

3.3. Eenvoudig voorbeeld met Jackson

Laten we nu eens kijken hoe we Jackson in een eenvoudig voorbeeld kunnen gebruiken:

@Test openbare leegte whenSerializeAndDeserializeUsingJackson_thenCorrect () gooit IOException {Foo foo = nieuwe Foo (1, "eerste"); ObjectMapper-mapper = nieuwe ObjectMapper (); String jsonStr = mapper.writeValueAsString (foo); Foo resultaat = mapper.readValue (jsonStr, Foo.class); assertEquals (foo.getId (), resultaat.getId ()); }

Let daar op:

  • ObjectMapper.writeValueAsString () wordt gebruikt om Object naar JSON-tekenreeks te serialiseren.
  • ObjectMapper.readValue () wordt gebruikt om de JSON-string naar Java-object te deserialiseren.
  • Voorbeeld van JSON-uitvoer:
{"id": 1, "naam": "eerste"}

4. Gson

Gson is de volgende Java JSON-bibliotheek waar we naar gaan kijken.

4.1. Handige bronnen

Hier zijn enkele officiële bronnen voor de bibliotheek:

  • Gson op Github
  • Gson-gebruikershandleiding

Op Baeldung:

  • Gson-serialisatiekookboek
  • Gson deserialisatie kookboek

Andere interessante opmerkingen:

  • Gson-uitsluitingsstrategie
  • Gson Custom Serializer / Deserializer
  • Java Gson + JSON-zelfstudie met voorbeelden

4.2. Afhankelijkheid van Maven

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

Merk op dat de nieuwste versie van Gson op dit moment 2.4.

4.3. Eenvoudig voorbeeld met Gson

Hier is een eenvoudig voorbeeld om te verduidelijken hoe Gson moet worden gebruikt om JSON te serialiseren / desrialiseren:

@Test openbare leegte whenSerializeAndDeserializeUsingGson_thenCorrect () {Gson gson = nieuwe Gson (); Foo foo = nieuwe Foo (1, "eerste"); String jsonStr = gson.toJson (foo); Foo-resultaat = gson.fromJson (jsonStr, Foo.class); assertEquals (foo.getId (), resultaat.getId ()); }

Let daar op:

  • Gson.toJson () wordt gebruikt om Object naar JSON te serialiseren
  • Gson.fromJson () wordt gebruikt om JSON naar Java-object te desrialiseren

5. Json-io

Json-io is een eenvoudige Java-bibliotheek om JSON te serialiseren / deserialiseren.

5.1. Handige bronnen

Hier zijn enkele officiële bronnen voor de bibliotheek:

  • json-io op Google Code
  • json-io op Github

5.2. Afhankelijkheid van Maven

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

Merk op dat de nieuwste versie van json-io op dit moment 4.1.9.

5.3. Eenvoudig voorbeeld met json-io

Laten we nu eens kijken naar een eenvoudig voorbeeld van het gebruik van json-io:

@Test openbare leegte whenSerializeAndDeserializeUsingJsonio_thenCorrect () {Foo foo = nieuwe Foo (1, "eerste"); String jsonStr = JsonWriter.objectToJson (foo); Foo-resultaat = (Foo) JsonReader.jsonToJava (jsonStr); assertEquals (foo.getId (), resultaat.getId ()); }

Let daar op:

  • JsonWriter.objectToJson () wordt gebruikt om Object naar JSON te serialiseren.
  • JsonReader.jsonToJava () wordt gebruikt om Json naar Java-object te deserialiseren.
  • Voorbeeld van JSON-uitvoer:
{"@type": "org.baeldung.Foo", "id": 1, "name": "first"}

6. Genson

Genson is een conversiebibliotheek van Java en Scala naar JSON, die volledige databinding en streaming biedt.

6.1. Handige bronnen

Hier zijn enkele officiële bronnen voor de bibliotheek:

  • Genson Officiële website
  • Genson op Github
  • Genson-gebruikershandleiding
  • Genson JSON-indeling voor byte-arrays

6.2. Afhankelijkheid van Maven

 com.owlike genson $ {genson.version} 

Merk op dat de nieuwste versie van Genson op dit moment 1.3.

6.3. Eenvoudig voorbeeld met Genson

Hier is een eenvoudig voorbeeld van werken met de bibliotheek:

@Test openbare leegte whenSerializeAndDeserializeUsingGenson_thenCorrect () {Genson genson = nieuwe Genson (); Foo foo = nieuwe Foo (1, "eerste"); String jsonStr = genson.serialize (foo); Foo resultaat = genson.deserialize (jsonStr, Foo.class); assertEquals (foo.getId (), resultaat.getId ()); }

Let daar op:

  • Genson.serialize () wordt gebruikt om Object naar JSON te serialiseren
  • Genson.desrialize () wordt gebruikt om JSON naar Java-object te deserialiseren

7. Conclusie

In dit korte overzichtsartikel hebben we geleerd over de meest voorkomende JSON-verwerkingsbibliotheken in Java.

Jackson onderkant

Ik heb zojuist het nieuwe aangekondigd Leer de lente natuurlijk, gericht op de basisprincipes van Spring 5 en Spring Boot 2:

>> BEKIJK DE CURSUS