JSON di Jawa

Jackson Teratas

Saya baru sahaja mengumumkan kursus Learn Spring yang baru , yang berfokus pada asas-asas Spring 5 dan Spring Boot 2:

>> SEMAK KURSUS

1. Gambaran keseluruhan

Bekerja dengan data JSON di Java memang mudah , tetapi - seperti kebanyakan apa pun di Java - ada banyak pilihan dan perpustakaan yang dapat kita pilih.

Panduan ini harus menjadikan pilihan itu lebih mudah dan harus memberi anda pemahaman yang kuat mengenai ekosistem sekarang. Kami akan membincangkan perpustakaan pemprosesan JSON yang paling biasa di Java:

  • Jackson
  • Gson
  • json-io
  • Genson

Kami mengikuti struktur mudah untuk setiap perpustakaan - pertama beberapa sumber berguna untuk memulakan (baik di sini di Baeldung dan juga luaran). Kemudian kita akan melihat contoh kod asas , hanya untuk melihat bagaimana sebenarnya bekerja dengan perpustakaan.

2. Populariti dan Statistik Asas

Pertama, mari kita mulakan dengan beberapa statistik sebagai proksi untuk populariti setiap perpustakaan:

2.1. Jackson

  • Penggunaan Maven: pengikat data ( 2362 ), inti ( 1377 )
  • Bintang Github: 1457
  • Garpu Github: 585

2.2. Gson

  • Penggunaan Maven: 1588
  • Bintang Github: 2079
  • Garpu Github: 471

2.3. json-io

  • Penggunaan Maven: 11
  • Bintang Github: 129
  • Garpu Github: 40

2.4. Genson

  • Penggunaan Maven: 8
  • Bintang Github: 67
  • Garpu Github: 15

3. Jackson

Seterusnya, mari kita lihat yang paling popular - Jackson. Jackson adalah perpustakaan Java pelbagai guna untuk memproses data JSON.

3.1. Sumber Berguna

Berikut adalah beberapa sumber rasmi untuk perpustakaan:

  • Wiki Jackson rasmi
  • Jackson di Github

Di Baeldung:

  • Tutorial Jackson
  • Tarikh Jackson
  • Paparan Jackson JSON
  • Panduan untuk Anotasi Jackson
  • Pengecualian Jackson - Masalah dan Penyelesaian
  • Jackson - Tentukan Bidang Apa yang Diperoleh Serial / Deserialized
  • Jackson - Hubungan Dua Hala
  • Jackson - Serializer Custom
  • Jackson - Penyesuai Kustom

Tulisan Menarik Lain:

  • Jackson JSON Processing API di Java Contoh Tutorial
  • Jackson - ObjectMapper
  • Jackson 2 - Menukar Objek Java ke / dari JSON

3.2. Ketergantungan Maven

Untuk menggunakan perpustakaan - inilah ketergantungan Maven untuk ditambahkan ke pom.xml anda :

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

Perhatikan bahawa versi terbaru Jackson sekarang adalah 2.6.3 .

3.3. Contoh Ringkas dengan Jackson

Sekarang, mari kita lihat cara menggunakan Jackson dalam contoh mudah:

@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()); }

Perhatikan bahawa:

  • ObjectMapper.writeValueAsString () digunakan untuk membuat siri Objek ke rentetan JSON.
  • ObjectMapper.readValue () digunakan untuk deserialisasi rentetan JSON ke Objek Java.
  • Contoh output JSON:
{ "id":1, "name":"first" }

4. Gson

Gson adalah perpustakaan Java JSON seterusnya yang akan kita kaji.

4.1. Sumber Berguna

Berikut adalah beberapa sumber rasmi untuk perpustakaan:

  • Gson pada Github
  • Panduan Pengguna Gson

Di Baeldung:

  • Buku masakan bersiri Gson
  • Buku masakan deserialization Gson

Tulisan Menarik Lain:

  • Strategi Pengecualian Gson
  • Serializer / Deserializer Custom Gson
  • Java Gson + JSON Tutorial with Examples

4.2. Maven Dependency

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

Note that the latest version of Gson right now is 2.4.

4.3. Simple Example with Gson

Here is a simple example clarify how to use Gson to serialize/desrialize 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()); }

Note that:

  • Gson.toJson() is used to serialize Object to JSON
  • Gson.fromJson() is used to desrialize JSON to Java Object

5. Json-io

Json-io is a simple Java library to serialize/deserialize JSON.

5.1. Useful Resources

Here are some official resources for the library:

  • json-io on Google Code
  • json-io on Github

5.2. Maven Dependency

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

Note that the latest version of json-io right now is 4.1.9.

5.3. Simple Example with json-io

Now, let's take a look at a simple example of using 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()); }

Note that:

  • JsonWriter.objectToJson() is used to serialize Object to JSON.
  • JsonReader.jsonToJava() is used to deserialize Json to Java Object.
  • Sample JSON output:
{ "@type":"org.baeldung.Foo", "id":1, "name":"first" }

6. Genson

Genson is a Java and Scala to JSON conversion library, providing full databinding and streaming.

6.1. Useful Resources

Here are some official resources for the library:

  • Genson Official website
  • Genson on Github
  • Genson User Guide
  • Genson JSON format for byte arrays

6.2. Maven Dependency

 com.owlike genson ${genson.version} 

Note that the latest version of Genson right now is 1.3.

6.3. Simple Example with Genson

Here's a simple example of working with the library:

@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()); }

Note that:

  • Genson.serialize() is used to serialize Object to JSON
  • Genson.desrialize() is used to deserialize JSON to Java Object

7. Conclusion

Dalam artikel ikhtisar ringkas ini, kami mengetahui tentang perpustakaan pemprosesan JSON yang paling biasa di Java.

Bahagian bawah Jackson

Saya baru sahaja mengumumkan kursus Learn Spring yang baru , yang berfokus pada asas-asas Spring 5 dan Spring Boot 2:

>> SEMAK KURSUS