JSON in Java
Ik heb zojuist het nieuwe aangekondigd Leer de lente natuurlijk, gericht op de basisprincipes van Spring 5 en Spring Boot 2:
>> BEKIJK DE CURSUS1. 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