Перейти к основному содержимому

JSON в Java

· 5 мин. чтения

1. Обзор

Работать с данными JSON в Java может быть легко , но, как и во всем остальном в Java, существует множество опций и библиотек, из которых мы можем выбирать.

Это руководство должно облегчить этот выбор и дать вам четкое представление об экосистеме прямо сейчас. Мы обсудим наиболее распространенные библиотеки обработки JSON в Java:

Мы придерживаемся простой структуры для каждой библиотеки — сначала несколько полезных ресурсов для начала работы (как здесь, в ForEach, так и извне). Затем мы рассмотрим базовый пример кода , просто чтобы увидеть, как на самом деле выглядит работа с библиотекой.

2. Популярность и базовая статистика

Во-первых, давайте начнем с некоторой статистики в качестве показателя популярности каждой библиотеки:

2.1. Джексон

2.2. Гсон

2.3. json-io

2.4. Генсон

3. Джексон

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

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

Вот несколько официальных ресурсов для библиотеки:

В ForEach:

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

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

Чтобы использовать библиотеку — вот зависимость Maven для добавления в ваш pom.xml :

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

Обратите внимание, что последняя версия Джексона на данный момент — 2.13 .

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.
  • Пример вывода JSON:
{
"id":1,
"name":"first"
}

4. Гсон

Gson — это следующая библиотека Java JSON, которую мы собираемся рассмотреть.

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

Вот несколько официальных ресурсов для библиотеки:

В ForEach:

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

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

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

Обратите внимание, что последняя версия Gson на данный момент — 2.8.8 .

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.

5. Json-ио

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

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

Вот несколько официальных ресурсов для библиотеки:

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

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

Обратите внимание, что последняя версия json-io на данный момент — 4.13.0 .

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() используется для сериализации объекта в JSON.
  • JsonReader.jsonToJava() используется для десериализации Json в объект Java.
  • Пример вывода JSON:
{
"@type":"org.foreach.Foo",
"id":1,
"name":"first"
}

6. Генсон

Genson — это библиотека преобразования Java и Scala в JSON, обеспечивающая полную привязку данных и потоковую передачу.

6.1. Полезные ресурсы

Вот несколько официальных ресурсов для библиотеки:

6.2. Зависимость от Maven

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

Обратите внимание, что последняя версия Genson на данный момент — 1.6.

6.3. Простой пример с Генсоном

Вот простой пример работы с библиотекой:

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

Обратите внимание, что:

  • Genson.serialize() используется для сериализации объекта в JSON .
  • Genson.desrialize() используется для десериализации JSON в объект Java.

7. Заключение

В этой краткой обзорной статье мы узнали о наиболее распространенных библиотеках обработки JSON в Java.