JSON i Java
Jeg har lige annonceret det nye Lær foråret kursus med fokus på det grundlæggende i Spring 5 og Spring Boot 2:
>> KONTROLLER KURSEN1. Oversigt
Det kan være let at arbejde med JSON-data i Java, men - som de fleste andre ting i Java - er der mange muligheder og biblioteker, vi kan vælge imellem.
Denne vejledning skulle gøre dette valg lettere og skulle give dig en solid forståelse af økosystemet lige nu. Vi diskuterer de mest almindelige JSON-behandlingsbiblioteker i Java:
- Jackson
- Gson
- json-io
- Genson
Vi følger en enkel struktur for hvert bibliotek - først nogle nyttige ressourcer til at komme i gang (både her på Baeldung såvel som eksternt). Så går vi over et grundlæggende kodeeksempel, bare for at se, hvordan arbejde med biblioteket faktisk ser ud.
2. Popularitet og grundlæggende statistik
Lad os først starte med nogle statistikker som en proxy for populariteten af hvert bibliotek:
2.1. Jackson
- Maven Usage: data-bind (2362), kerne (1377)
- Github Stars: 1457
- Github Forks: 585
2.2. Gson
- Brug af Maven: 1588
- Github Stars: 2079
- Github Forks: 471
2.3. json-io
- Brug af Maven: 11
- Github Stars: 129
- Github Forks: 40
2.4. Genson
- Brug af Maven: 8
- Github Stars: 67
- Github Forks: 15
3. Jackson
Lad os derefter se på de mest populære af disse - Jackson. Jackson er et multifunktionelt Java-bibliotek til behandling af JSON-data.
3.1. Nyttige ressourcer
Her er nogle officielle ressourcer til biblioteket:
- Officiel Jackson wiki
- Jackson på Github
På Baeldung:
- Jackson tutorial
- Jackson Date
- Jackson JSON-synspunkter
- En guide til Jackson-kommentarer
- Jackson Undtagelser - Problemer og løsninger
- Jackson - Beslut hvilke felter der bliver serialiseret / deserialiseret
- Jackson - tovejsforhold
- Jackson - Custom Serializer
- Jackson - Custom Deserializer
Andre interessante skrivninger:
- Jackson JSON Processing API i Java-eksempelvejledning
- Jackson - ObjectMapper
- Jackson 2 - Konverter Java-objekt til / fra JSON
3.2. Maven afhængighed
For at bruge biblioteket - her er Maven-afhængigheden, der skal tilføjes til din pom.xml:
com.fasterxml.jackson.core jackson-databind $ {jackson.version}
Bemærk, at den seneste version af Jackson lige nu er 2.6.3.
3.3. Simpel eksempel med Jackson
Lad os nu se, hvordan man bruger Jackson i et simpelt eksempel:
@Test offentlig ugyldigt nårSerializeAndDeserializeUsingJackson_thenCorrect () kaster IOException {Foo foo = ny Foo (1, "første"); ObjectMapper-kortlægger = ny ObjectMapper (); String jsonStr = mapper.writeValueAsString (foo); Foo-resultat = mapper.readValue (jsonStr, Foo.class); assertEquals (foo.getId (), result.getId ()); }
Noter det:
- ObjectMapper.writeValueAsString () bruges til at serieisere objekt til JSON-streng.
- ObjectMapper.readValue () bruges til at deserialisere JSON-streng til Java-objekt.
- Eksempel på JSON-output:
{"id": 1, "name": "første"}
4. Gson
Gson er det næste Java JSON-bibliotek, som vi skal se på.
4.1. Nyttige ressourcer
Her er nogle officielle ressourcer til biblioteket:
- Gson på Github
- Gson Brugervejledning
På Baeldung:
- Gson-serialisering kogebog
- Gson deserialisering kogebog
Andre interessante skrivninger:
- Gson-ekskluderingsstrategi
- Gson Custom Serializer / Deserializer
- Java Gson + JSON Tutorial med eksempler
4.2. Maven afhængighed
com.google.code.gson gson $ {gson.version}
Bemærk, at den seneste version af Gson lige nu er 2.4.
4.3. Simpel eksempel med Gson
Her er et enkelt eksempel, der præciserer, hvordan du bruger Gson til at serialisere / desrialisere JSON:
@Test offentlig ugyldig nårSerializeAndDeserializeUsingGson_thenCorrect () {Gson gson = ny Gson (); Foo foo = ny Foo (1, "første"); Streng jsonStr = gson.toJson (foo); Foo-resultat = gson.fromJson (jsonStr, Foo.class); assertEquals (foo.getId (), result.getId ()); }
Noter det:
- Gson.toJson () bruges til at serialisere Objekt til JSON
- Gson.fromJson () bruges til at desrialisere JSON til Java Object
5. Json-io
Json-io er et simpelt Java-bibliotek til serie- / deserialisering af JSON.
5.1. Nyttige ressourcer
Her er nogle officielle ressourcer til biblioteket:
- json-io på Google Code
- json-io på Github
5.2. Maven afhængighed
com.cedarsoftware json-io $ {json-io.version}
Bemærk, at den seneste version af json-io lige nu er 4.1.9.
5.3. Simpel eksempel med json-io
Lad os nu se på et simpelt eksempel på brug af json-io:
@Test offentligt ugyldigt nårSerializeAndDeserializeUsingJsonio_thenCorrect () {Foo foo = new Foo (1, "first"); String jsonStr = JsonWriter.objectToJson (foo); Foo-resultat = (Foo) JsonReader.jsonToJava (jsonStr); assertEquals (foo.getId (), result.getId ()); }
Noter det:
- JsonWriter.objectToJson () bruges til at serialisere Objekt til JSON.
- JsonReader.jsonToJava () bruges til at deserialisere Json til Java Object.
- Eksempel på JSON-output:
{"@type": "org.baeldung.Foo", "id": 1, "name": "first"}
6. Genson
Genson er et Java- og Scala til JSON-konverteringsbibliotek, der leverer fuld databinding og streaming.
6.1. Nyttige ressourcer
Her er nogle officielle ressourcer til biblioteket:
- Genson officielle hjemmeside
- Genson på Github
- Genson Brugervejledning
- Genson JSON-format til byte-arrays
6.2. Maven afhængighed
com.owlike genson $ {genson.version}
Bemærk, at den seneste version af Genson lige nu er 1.3.
6.3. Simpel eksempel med Genson
Her er et simpelt eksempel på at arbejde med biblioteket:
@Test offentligt ugyldigt nårSerializeAndDeserializeUsingGenson_thenCorrect () {Genson genson = ny Genson (); Foo foo = ny Foo (1, "første"); Streng jsonStr = genson.serialize (foo); Foo-resultat = genson.deserialize (jsonStr, Foo.class); assertEquals (foo.getId (), result.getId ()); }
Noter det:
- Genson.serialize () bruges til at serialisere Objekt til JSON
- Genson.desrialize () bruges til at deserialisere JSON til Java Object
7. Konklusion
I denne hurtige oversigtsartikel lærte vi om de mest almindelige JSON-behandlingsbiblioteker i Java.
Jackson bund