JSON i Java

Jackson Top

Jeg kunngjorde nettopp det nye Lær våren kurs, med fokus på det grunnleggende i vår 5 og vårstøvel 2:

>> KONTROLLER KURSET

1. Oversikt

Det kan være enkelt å jobbe med JSON-data i Java, men - som det meste i Java - er det mange alternativer og biblioteker vi kan velge mellom.

Denne veiledningen skal gjøre dette valget enklere og skal gi deg en solid forståelse av økosystemet akkurat nå. Vi diskuterer de vanligste JSON-behandlingsbibliotekene i Java:

  • Jackson
  • Gson
  • json-io
  • Genson

Vi følger en enkel struktur for hvert bibliotek - først noen nyttige ressurser for å komme i gang (både her på Baeldung så vel som eksternt). Så skal vi gå over et grunnleggende kodeeksempel, bare for å se hvordan arbeidet med biblioteket faktisk ser ut.

2. Popularitet og grunnleggende statistikk

Først, la oss starte med litt statistikk som en fullmakt for populariteten til hvert bibliotek:

2.1. Jackson

  • Maven Usage: data-bind (2362), kjerne (1377)
  • Github Stars: 1457
  • Github Forks: 585

2.2. Gson

  • Bruk av Maven: 1588
  • Github Stars: 2079
  • Github Forks: 471

2.3. json-io

  • Bruk av Maven: 11
  • Github Stars: 129
  • Github Forks: 40

2.4. Genson

  • Bruk av Maven: 8
  • Github Stars: 67
  • Github Forks: 15

3. Jackson

La oss ta en titt på de mest populære av disse - Jackson. Jackson er et allsidig Java-bibliotek for behandling av JSON-data.

3.1. Nyttige ressurser

Her er noen offisielle ressurser for biblioteket:

  • Offisiell Jackson wiki
  • Jackson på Github

På Baeldung:

  • Jackson tutorial
  • Jackson Date
  • Jackson JSON Visninger
  • En guide til Jackson-merknader
  • Jackson-unntak - problemer og løsninger
  • Jackson - Bestem hvilke felt som blir serialisert / deserialisert
  • Jackson - toveis forhold
  • Jackson - Custom Serializer
  • Jackson - Custom Deserializer

Andre interessante skrivinger:

  • Jackson JSON Processing API i Java Eksempelveiledning
  • Jackson - ObjectMapper
  • Jackson 2 - Konverter Java-objekt til / fra JSON

3.2. Maven avhengighet

For å bruke biblioteket - her er Maven-avhengigheten å legge til i pom.xml:

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

Merk at den siste versjonen av Jackson akkurat nå er 2.6.3.

3.3. Enkelt eksempel med Jackson

La oss nå se hvordan du bruker Jackson i et enkelt eksempel:

@Test offentlig ugyldig nårSerializeAndDeserializeUsingJackson_thenCorrect () kaster IOException {Foo foo = new Foo (1, "first"); ObjectMapper mapper = ny ObjectMapper (); Streng jsonStr = mapper.writeValueAsString (foo); Foo-resultat = mapper.readValue (jsonStr, Foo.class); assertEquals (foo.getId (), result.getId ()); }

Noter det:

  • ObjectMapper.writeValueAsString () brukes til å serieisere objekt til JSON-streng.
  • ObjectMapper.readValue () brukes til å deserialisere JSON-streng til Java Object.
  • Eksempel på JSON-utgang:
{"id": 1, "name": "first"}

4. Gson

Gson er det neste Java JSON-biblioteket vi skal se på.

4.1. Nyttige ressurser

Her er noen offisielle ressurser for biblioteket:

  • Gson på Github
  • Gson brukerhåndbok

På Baeldung:

  • Gson seriell kokebok
  • Gson deserialisering kokebok

Andre interessante skrivinger:

  • Gson-ekskluderingsstrategi
  • Gson Custom Serializer / Deserializer
  • Java Gson + JSON Tutorial med eksempler

4.2. Maven avhengighet

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

Merk at den siste versjonen av Gson akkurat nå er 2.4.

4.3. Enkelt eksempel med Gson

Her er et enkelt eksempel for å avklare hvordan du bruker Gson til å serieisere / desrialisere JSON:

@Test offentlig ugyldig nårSerializeAndDeserializeUsingGson_thenCorrect () {Gson gson = new Gson (); Foo foo = nye Foo (1, "første"); String jsonStr = gson.toJson (foo); Foo resultat = gson.fromJson (jsonStr, Foo.class); assertEquals (foo.getId (), result.getId ()); }

Noter det:

  • Gson.toJson () brukes til å serialisere Objekt til JSON
  • Gson.fromJson () brukes til å desrialisere JSON til Java Object

5. Json-io

Json-io er et enkelt Java-bibliotek for å serieisere / deserialisere JSON.

5.1. Nyttige ressurser

Her er noen offisielle ressurser for biblioteket:

  • json-io på Google Code
  • json-io på Github

5.2. Maven avhengighet

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

Merk at den siste versjonen av json-io akkurat nå er 4.1.9.

5.3. Enkelt eksempel med json-io

La oss nå se på et enkelt eksempel på bruk av json-io:

@Test offentlig ugyldig 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 () brukes til å serieisere objekt til JSON.
  • JsonReader.jsonToJava () brukes til å deserialisere Json til Java Object.
  • Eksempel på JSON-utgang:
{"@type": "org.baeldung.Foo", "id": 1, "name": "first"}

6. Genson

Genson er et Java- og Scala to JSON-konverteringsbibliotek som gir full databinding og streaming.

6.1. Nyttige ressurser

Her er noen offisielle ressurser for biblioteket:

  • Genson offisielle nettside
  • Genson på Github
  • Genson brukerhåndbok
  • Genson JSON-format for byte-arrays

6.2. Maven avhengighet

 com.owlike genson $ {genson.version} 

Merk at den siste versjonen av Genson akkurat nå er 1.3.

6.3. Enkelt eksempel med Genson

Her er et enkelt eksempel på å jobbe med biblioteket:

@Test offentlig ugyldig nårSerializeAndDeserializeUsingGenson_thenCorrect () {Genson genson = new Genson (); Foo foo = nye 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 () brukes til å serialisere Objekt til JSON
  • Genson.desrialize () brukes til å deserialisere JSON til Java Object

7. Konklusjon

I denne raske oversiktsartikkelen lærte vi om de vanligste JSON-behandlingsbibliotekene i Java.

Jackson bunn

Jeg kunngjorde nettopp det nye Lær våren kurs, med fokus på det grunnleggende i vår 5 og vårstøvel 2:

>> KONTROLLER KURSET

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