JSON в Java

Джаксън Топ

Току що обявих новия курс Learn Spring , фокусиран върху основите на Spring 5 и Spring Boot 2:

>> ПРЕГЛЕД НА КУРСА

1. Общ преглед

Работата с JSON данни в Java може да бъде лесна , но - както повечето неща в Java - има много опции и библиотеки, от които можем да избираме.

Това ръководство трябва да улесни този избор и трябва да ви даде солидно разбиране за екосистемата в момента. Ще обсъдим най-често срещаните библиотеки за обработка на JSON в Java:

  • Джаксън
  • Gson
  • json-io
  • Дженсън

Следваме проста структура за всяка библиотека - първо някои полезни ресурси, за да започнете (както тук на Baeldung, така и външни). След това ще разгледаме пример за основен код , само за да видим как всъщност изглежда работата с библиотеката.

2. Популярност и основни статистически данни

Първо, нека започнем с някои статистически данни като прокси за популярността на всяка библиотека:

2.1. Джаксън

  • Използване на Maven: свързване на данни ( 2362 ), ядро ​​( 1377 )
  • Github Stars: 1457
  • Github вилици: 585

2.2. Gson

  • Използване на Maven: 1588
  • Github Stars: 2079
  • Github вилици: 471

2.3. json-io

  • Използване на Maven: 11
  • Github Stars: 129
  • Github вилици: 40

2.4. Дженсън

  • Използване на Maven: 8
  • Github Stars: 67
  • Github вилици: 15

3. Джаксън

След това нека да разгледаме най-популярния от тях - Джаксън. Jackson е многоцелева Java библиотека за обработка на JSON данни.

3.1. Полезни ресурси

Ето някои официални ресурси за библиотеката:

  • Официална уики Джаксън
  • Джаксън на Github

На Baeldung:

  • Урок на Джаксън
  • Джаксън Дата
  • Jackson JSON Views
  • Ръководство за анотации на Джаксън
  • Изключения на Джаксън - проблеми и решения
  • Джаксън - Решете кои полета да се сериализират / десериализират
  • Джаксън - двупосочни отношения
  • Джаксън - персонализиран сериализатор
  • Джаксън - персонализиран десериализатор

Други интересни записи:

  • API за обработка на Jackson JSON в Java примерен урок
  • Джаксън - ObjectMapper
  • Jackson 2 - Конвертирайте Java Object в / от JSON

3.2. Зависимост на Maven

За да използвате библиотеката - ето зависимостта Maven, която да добавите във вашия pom.xml :

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

Имайте предвид, че последната версия на Jackson в момента е 2.6.3 .

3.3. Прост пример с Джаксън

Сега нека видим как да използваме Джаксън в един прост пример:

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

Забележи, че:

  • ObjectMapper.writeValueAsString () се използва за сериализиране на обект към JSON низ.
  • ObjectMapper.readValue () се използва за десериализиране на JSON низ в Java Object.
  • Примерен изход JSON:
{ "id":1, "name":"first" }

4. Gson

Gson е следващата Java JSON библиотека, която ще разглеждаме.

4.1. Полезни ресурси

Ето някои официални ресурси за библиотеката:

  • Gson на Github
  • Ръководство за потребителя на Gson

На Baeldung:

  • Готварска книга за сериализация на Gson
  • Готварска книга за десериализация на Gson

Други интересни записи:

  • Стратегия за изключване на Gson
  • Gson потребителски сериализатор / десериализатор
  • Java Gson + JSON Урок с примери

4.2. Зависимост на Maven

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

Имайте предвид, че последната версия на Gson в момента е 2.4 .

4.3. Прост пример с Gson

Ето един прост пример, който изяснява как да се използва Gson за сериализиране / десриализиране на 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()); }

Забележи, че:

  • Gson.toJson () се използва за сериализиране на Обект към JSON
  • Gson.fromJson () се използва за десриализиране на JSON към Java Object

5. Json-io

Json-io е проста Java библиотека за сериализиране / десериализиране на JSON.

5.1. Полезни ресурси

Ето някои официални ресурси за библиотеката:

  • json-io в Google Code
  • json-io на Github

5.2. Зависимост на Maven

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

Имайте предвид, че последната версия на json-io в момента е 4.1.9 .

5.3. Прост пример с json-io

Сега, нека разгледаме един прост пример за използване на 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()); }

Забележи, че:

  • 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

В тази статия за бърз преглед научихме за най-често срещаните библиотеки за обработка на JSON в Java.

Джаксън отдолу

Току що обявих новия курс Learn Spring , фокусиран върху основите на Spring 5 и Spring Boot 2:

>> ПРЕГЛЕД НА КУРСА