JSON en Java

Jackson Top

Acabo de anunciar el nuevo curso Learn Spring , centrado en los fundamentos de Spring 5 y Spring Boot 2:

>> VER EL CURSO

1. 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

Acabo de anunciar el nuevo curso Learn Spring , centrado en los fundamentos de Spring 5 y Spring Boot 2:

>> VER EL CURSO