Току що обявих новия курс 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.
Джаксън отдолу