JSON i Java

Jackson Top

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 KURSEN

1. 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

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 KURSEN

$config[zx-auto] not found$config[zx-overlay] not found