writevalueasstring serialize example java json comparison gson jackson

serialize - objectmapper java



Jackson Vs. Gson (5)

Agregando a otras respuestas ya dadas anteriormente. Si la insensibilidad a los casos es importante para usted, entonces use Jackson. Gson no admite la falta de sensibilidad de mayúsculas y minúsculas para los nombres de clave, mientras que Jackson sí lo hace.

Aquí hay dos enlaces relacionados

(No) Compatibilidad con mayúsculas y minúsculas en Gson: GSON: ¿Cómo obtener un elemento que no distingue entre mayúsculas y minúsculas de Json?

Soporte de sensibilidad a mayúsculas en Jackson https://gist.github.com/electrum/1260489

Después de buscar en algunas bibliotecas existentes para JSON, finalmente he terminado con estas dos:

  • Jackson
  • Google GSon

Soy un poco parcial hacia GSON, pero la palabra en la red es que GSon sufre de un cierto issue rendimiento celestial (desde septiembre de 2009).

Continúo mi comparación; Mientras tanto, estoy buscando ayuda para decidirme.


Gson 1.6 ahora incluye una API de transmisión de bajo nivel y un nuevo analizador que en realidad es más rápido que Jackson.


Hice esta investigación la semana pasada y terminé con las mismas 2 bibliotecas. Como uso Spring 3 (que adopta a Jackson en su vista de Json por defecto '' JacksonJsonView '') fue más natural para mí hacer lo mismo. Las 2 lib son prácticamente iguales ... al final, simplemente se asignan a un archivo json. :)

De todos modos, como dijiste, Jackson tiene un + en rendimiento y eso es muy importante para mí. El proyecto también es bastante activo, como se puede ver en su página web y también es una buena señal.


Jackson y Gson son los paquetes Java JSON más completos con respecto al soporte de enlace de datos real; muchos otros paquetes solo proporcionan enlaces de Mapa / Lista primitivos (o modelo de árbol equivalente). Ambos tienen soporte completo para tipos genéricos, también, como configurabilidad suficiente para muchos casos de uso comunes.

Ya que estoy más familiarizado con Jackson, aquí hay algunos aspectos en los que creo que Jackson tiene un soporte más completo que Gson (disculpa si me olvido de una función de Gson):

  • Amplio soporte de anotación; incluyendo la herencia completa y las anotaciones avanzadas de "mezcla" (asocie las anotaciones con una clase para los casos en los que no puede agregarlas directamente)
  • Streaming (incremental) lectura, escritura, para casos de uso de rendimiento ultra alto (o con memoria limitada); puede mezclarse con el enlace de datos (subárboles de enlace) - EDITAR : las últimas versiones de Gson también incluyen un lector de transmisión
  • Modelo de árbol (acceso tipo DOM); puede convertir entre varios modelos (árbol <-> objeto java <-> flujo)
  • Puede usar cualquier constructor (o métodos de fábrica estáticos), no solo el constructor predeterminado
  • Acceso de campo y captador / definidor (las versiones anteriores de gson solo usaban campos, esto puede haber cambiado)
  • Soporte JAX-RS fuera de la caja
  • Interoperabilidad: también puede usar anotaciones JAXB, tiene soporte / soluciones para paquetes comunes (joda, ibatis, cglib), idiomas JVM (groovy, clojure, scala)
  • Capacidad para forzar el manejo de tipo estático (declarado) para la salida
  • Soporte para deserializar tipos polimórficos (Jackson 1.5): puede serializar Y deserializar cosas como Listar correctamente (con información de tipo adicional)
  • Soporte integrado para contenido binario (base64 a / desde cadenas JSON)

Parece que GSon no soporta JAXB. Al usar la clase anotada JAXB para crear o procesar el mensaje JSON, puedo compartir la misma clase para crear la interfaz del Servicio Web Restful utilizando Spring MVC.