Java >> Java tutorial >  >> Tag >> Json

JSON i Java

1. Oversigt

Det kan være nemt at arbejde med JSON-data i Java , men – som det meste i Java – er der en masse muligheder og biblioteker, vi kan vælge imellem.

Denne guide skulle gøre det valg lettere og skulle give dig en solid forståelse af økosystemet lige nu. Vi vil diskutere 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). Derefter skal vi gennemgå et grundlæggende kodeeksempel , bare for at se, hvordan arbejdet med biblioteket rent faktisk ser ud.

2. Popularitet og grundlæggende statistik

Lad os først starte med nogle statistikker som en proxy for hvert biblioteks popularitet:

2.1. Jackson

  • Maven Usage:data-binding (2362 ), kerne (1377 )
  • Github-stjerner:1457
  • Github Forks:585

2.2. Gson

  • Maven-brug:1588
  • Github-stjerner:2079
  • Github Forks:471

2.3. json-io

  • Maven-brug:11
  • Github-stjerner:129
  • Github Forks:40

2.4. Genson

  • Maven-brug:8
  • Github-stjerner:67
  • Github Forks:15

3. Jackson

Lad os derefter tage et kig 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

Om Baeldung:

  • Jackson selvstudie
  • Jackson-dato
  • Jackson JSON-visninger
  • En guide til Jackson-annoteringer
  • Jackson Undtagelser – Problemer og løsninger
  • Jackson – Beslut hvilke felter der skal serialiseres/deserialiseres
  • Jackson – Tovejsforhold
  • Jackson – Custom Serializer
  • Jackson – Custom Deserializer

Andre interessante indlæg:

  • Jackson JSON Processing API i Java Eksempel Selvstudium
  • Jackson – ObjectMapper
  • Jackson 2 – Konverter Java Object til/fra JSON

3.2. Maven Dependency

For at bruge biblioteket – her er Maven-afhængigheden, der skal tilføjes til din pom.xml :

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
</dependency>

Bemærk, at den seneste version af Jackson lige nu er 2.13 .

3.3. Simpelt eksempel med Jackson

Lad os nu se, hvordan man bruger Jackson i et simpelt eksempel:

@Test
public void whenSerializeAndDeserializeUsingJackson_thenCorrect() 
  throws IOException{
    Foo foo = new Foo(1,"first");
    ObjectMapper mapper = new ObjectMapper();

    String jsonStr = mapper.writeValueAsString(foo);
    Foo result = mapper.readValue(jsonStr, Foo.class);
    assertEquals(foo.getId(),result.getId());
}

Bemærk at:

  • ObjectMapper.writeValueAsString() bruges til at serialisere objekt til JSON-streng.
  • ObjectMapper.readValue() bruges til at deserialisere JSON-strengen til Java Object.
  • Eksempel på JSON-output:
{
    "id":1,
    "name":"first"
}

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

Om Baeldung:

  • Gson serialisering kogebog
  • Gson deserialisering kogebog

Andre interessante indlæg:

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

4.2. Maven Dependency

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>${gson.version}</version>
</dependency>

Bemærk, at den seneste version af Gson lige nu er2.8.8 .

4.3. Simpelt eksempel med Gson

Her er et simpelt eksempel, der afklarer, hvordan man bruger Gson til at serialisere/derialisere JSON:

@Test
public void whenSerializeAndDeserializeUsingGson_thenCorrect(){
    Gson gson = new Gson();
    Foo foo = new Foo(1,"first");

    String jsonStr = gson.toJson(foo);
    Foo result = gson.fromJson(jsonStr, Foo.class);
    assertEquals(foo.getId(),result.getId());
}

Bemærk at:

  • 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 at serialisere/deserialisere JSON.

5.1. Nyttige ressourcer

Her er nogle officielle ressourcer til biblioteket:

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

5.2. Maven Dependency

<dependency>
    <groupId>com.cedarsoftware</groupId>
    <artifactId>json-io</artifactId>
    <version>${json-io.version}</version>
</dependency>

Bemærk, at den seneste version af json-io lige nu er 4.13.0 .

5.3. Simpelt eksempel med json-io

Lad os nu tage et kig på et simpelt eksempel på brug af json-io:

@Test
public void whenSerializeAndDeserializeUsingJsonio_thenCorrect(){
    Foo foo = new Foo(1,"first");

    String jsonStr = JsonWriter.objectToJson(foo);
    Foo result = (Foo) JsonReader.jsonToJava(jsonStr);
    assertEquals(foo.getId(),result.getId());
}

Bemærk at:

  • 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 giver fuld databinding og streaming.

6.1. Nyttige ressourcer

Her er nogle officielle ressourcer til biblioteket:

  • Gensons officielle hjemmeside
  • Genson på Github
  • Genson Brugervejledning
  • Genson JSON-format for byte-arrays

6.2. Maven Dependency

<dependency>
    <groupId>com.owlike</groupId>
    <artifactId>genson</artifactId>
    <version>${genson.version}</version>
</dependency>

Bemærk, at den seneste version af Genson lige nu er 1.6.

6.3. Simpelt eksempel med Genson

Her er et simpelt eksempel på at arbejde med biblioteket:

@Test
public void whenSerializeAndDeserializeUsingGenson_thenCorrect(){
    Genson genson = new Genson();
    Foo foo = new Foo(1,"first");

    String jsonStr = genson.serialize(foo);
    Foo result = genson.deserialize(jsonStr, Foo.class);
    assertEquals(foo.getId(),result.getId());
}

Bemærk at:

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


Java tag