Acabo de anunciar el nuevo curso Learn Spring , centrado en los fundamentos de Spring 5 y Spring Boot 2:
>> VER EL CURSO1. Información general
Trabajar con datos JSON en Java puede ser fácil , pero, como casi todo en Java, hay muchas opciones y bibliotecas entre las que podemos elegir.
Esta guía debería facilitar esa elección y debería proporcionarle una comprensión sólida del ecosistema en este momento. Analizaremos las bibliotecas de procesamiento JSON más comunes en Java:
- Jackson
- Gson
- json-io
- Genson
Seguimos una estructura simple para cada biblioteca: primero, algunos recursos útiles para comenzar (tanto aquí en Baeldung como externos). Luego, repasaremos un ejemplo de código básico , solo para ver cómo se ve realmente trabajar con la biblioteca.
2. Popularidad y estadísticas básicas
Primero, comencemos con algunas estadísticas como proxy de la popularidad de cada biblioteca:
2.1. Jackson
- Uso de Maven: enlace de datos ( 2362 ), núcleo ( 1377 )
- Estrellas de Github: 1457
- Horquillas Github: 585
2.2. Gson
- Uso de Maven: 1588
- Estrellas de Github: 2079
- Horquillas Github: 471
2.3. json-io
- Uso de Maven: 11
- Estrellas de Github: 129
- Horquillas Github: 40
2.4. Genson
- Uso de Maven: 8
- Estrellas de Github: 67
- Horquillas Github: 15
3. Jackson
A continuación, echemos un vistazo al más popular de estos: Jackson. Jackson es una biblioteca Java multipropósito para procesar datos JSON.
3.1. Recursos útiles
Estos son algunos recursos oficiales para la biblioteca:
- Wiki oficial de Jackson
- Jackson en Github
En Baeldung:
- Tutorial de Jackson
- Jackson fecha
- Vistas JSON de Jackson
- Una guía para las anotaciones de Jackson
- Excepciones de Jackson: problemas y soluciones
- Jackson: decida qué campos se serializan / deserializan
- Jackson - Relaciones bidireccionales
- Jackson - Serializador personalizado
- Jackson - Deserializador personalizado
Otras reseñas interesantes:
- Tutorial de ejemplo de Jackson JSON Processing API en Java
- Jackson - ObjectMapper
- Jackson 2 - Convertir objeto Java a / desde JSON
3.2. Dependencia de Maven
Para usar la biblioteca, aquí está la dependencia de Maven para agregar a su pom.xml :
com.fasterxml.jackson.core jackson-databind ${jackson.version}
Tenga en cuenta que la última versión de Jackson en este momento es 2.6.3 .
3.3. Ejemplo simple con Jackson
Ahora, veamos cómo usar Jackson en un ejemplo simple:
@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()); }
Tenga en cuenta que:
- ObjectMapper.writeValueAsString () se utiliza para serializar Object en una cadena JSON.
- ObjectMapper.readValue () se utiliza para deserializar una cadena JSON en un objeto Java.
- Salida JSON de muestra:
{ "id":1, "name":"first" }
4. Gson
Gson es la próxima biblioteca JSON de Java que veremos.
4.1. Recursos útiles
Estos son algunos recursos oficiales para la biblioteca:
- Gson en Github
- Guía del usuario de Gson
En Baeldung:
- Libro de cocina de serialización gson
- Libro de cocina de deserialización de gson
Otras reseñas interesantes:
- Estrategia de exclusión de Gson
- Serializador / deserializador personalizado de 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
En este artículo de descripción general rápida, aprendimos sobre las bibliotecas de procesamiento JSON más comunes en Java.
Jackson fondo