Esta es la página de inicio del proyecto Jackson.
(Nota: Para información de lanzamiento actualizada, consulte los lanzamientos de Jackson)
Jackson ha sido conocido como "La Biblioteca Java Json" o "El mejor analizador JSON para Java". O simplemente como "Json para Java".
Más que eso, Jackson es un conjunto de herramientas de procesamiento de datos para Java (y la plataforma JVM), incluida la transmisión insignia de la biblioteca JSON PARSER / Generator, la biblioteca de unión a datos (POJOS y las propiedades de datos adicionales de datos adicionales para procesar los datos codificados en Avro, BSON, CBOR, CSV, Smile, Sm.) e incluso el gran conjunto de módulos de formato de datos para admitir tipos de datos de tipos de datos ampliamente utilizados como guayaba, joda, pcolecciones y muchos, muchos más (ver más abajo).
Mientras que los componentes principales reales viven bajo sus propios proyectos, incluidos los tres paquetes principales (transmisión, databind, anotaciones); Bibliotecas de formato de datos; Bibliotecas de tipo de datos; Proveedor de Jax-RS; y un conjunto misceláneo de otros módulos de extensión: este proyecto actúa como el centro central para unir todas las piezas.
Un buen compañero de este readme es la FAQ del proyecto Jackson.
Jackson Suite tiene dos versiones principales: 1.x está en desuso y no se liberan versiones; 2.x es la versión desarrollada activamente. Estas dos versiones principales usan diferentes paquetes de Java e identificaciones de artefactos maven, por lo que no son mutuamente compatibles, pero pueden coexistir pacíficamente: un proyecto puede depender de Jackson 1.x y 2.x, sin conflictos. Esto es por diseño y fue elegido como la estrategia para permitir una migración más suave de 1.x a 2.x.
Las últimas versiones estables de estas ramas son:
La forma recomendada de usar Jackson es a través de repositorios de Maven; Las versiones se realizan en el repositorio central de Maven (CMR). Las páginas wiki de los proyectos individuales a veces también contienen enlaces de descarga directa, que apuntan a CMR.
Las notas de lanzamiento para las versiones de 2.x se encuentran en la página de lanzamientos de Jackson.
La mayoría de los proyectos enumerados a continuación están liderados por el equipo de desarrollo de Jackson; Pero algunos de otros miembros de la comunidad en general Jackson. Tratamos de mantener la verificación de los módulos compatibles para reducir la confusión con respecto a qué versiones funcionan juntas.
Los módulos centrales son la base sobre la que se basan las extensiones (módulos). Actualmente hay 3 de estos módulos (a partir de Jackson 2.x):
streaming ; Depende tanto de los paquetes streaming como annotations Estas extensiones son el Module J Jackson S (registrado con ObjectMapper.registerModule() ) y agregan soporte para los tipos de datos de varias bibliotecas Java de uso común, agregando serializadores y deserializadores para que el paquete databind de Jackson ( ObjectMapper / ObjectReader / ObjectWriter ) pueda leer y escribir estos tipos.
Los módulos de tipo de datos mantenidos directamente por el equipo de Jackson están bajo los siguientes repositorios de GitHub:
jackson-module-parameter-names : módulo que agrega soporte para usar una nueva función JDK8, la capacidad de acceder a los nombres de los parámetros de constructor y método, para permitir omitir @JsonProperty .jackson-datatype-jsr310 : Soporte para "Fechas de Java 8" (las que se agregan en JDK 8)jackson-datatype-jdk8 : Soporte para JDK 8 tipos de datos distintos de los tipos de fecha/hora, incluida OptionalMoney , CurrencyUnit )javax.json ) y "nuevo" ( jakarta.json ):jakarta.json ( agregado en Jackson 2.12.2 )javax.jsonJSONObject , JSONArrayAdemás, conocemos módulos adicionales que no son mantenidos directamente por el equipo de Core Jackson:
jackson-dataformat-protobuf , que agrega soporte para la codificación/decodificación del contenido de ProtoBuf, pero que no depende de la biblioteca Java ProtoBuf estándarcom.github.caligin.tinytypes , artefacto tinytypes-jackson )org.vertx.java.core.json.JsonObject Objects (reempaquetado tipos de nodo org.json ) Los proveedores de Jackson Jax-RS tienen manejadores para agregar soporte de formato de datos para las implementaciones de Jax-RS (como Jersey, Resteasy, CXF). Los proveedores implementan MessageBodyReader y MessageBodyWriter . Los formatos compatibles actualmente incluyen JSON , Smile , XML , YAML y CBOR .
Los módulos de formato de datos ofrecen soporte para formatos de datos distintos de JSON. La mayoría de ellos simplemente implementan abstracciones de API streaming , de modo que el componente de databinding se puede usar como está; Algunos ofrecen (y pocos requieren) funcionalidad de nivel databind adicional para manejar cosas como esquemas.
Actualmente, los siguientes módulos de formato de datos son totalmente utilizables y compatibles (el número de versión entre paréntesis, si se incluye, es la primera versión de Jackson 2.x que incluye el módulo; si falta, incluido desde 2.0)
streaming más soporte de nivel databind adicional para los esquemas AVROstreaming , con adiciones databind de conveniencia opcionalesAvrostreaming API, sin cambios para databindstreaming e databindstreaming y databind . Similar al modo "Código primero" de Jaxb (no hay soporte para "Schema XML primero", pero puede usar frijoles Jaxb)streaming simpleTambién hay otros módulos de formato de datos, proporcionados por desarrolladores fuera del equipo Core de Jackson:
MsgPack )Las anotaciones de Jackson definen las propiedades previstas y el manejo esperado para los POJOS, y además de Jackson utilizando esto para leer/escribir JSON y otros formatos, también permite la generación de esquemas externos. Parte de esta funcionalidad se incluye en las extensiones de formato de datos mencionadas anteriormente; Pero también hay muchas herramientas de esquema independientes, como:
Otros módulos totalmente utilizables del equipo FASTERXML incluyen:
@JacksonInject (o además de)JAXB como una alternativa (además de o en lugar de) anotaciones estándar de Jackson@JacksonInject@JsonProperty .Si bien Jackson Databind es una buena opción para la unión de datos de uso general, su huella y gastos generales de inicio pueden ser problemáticos en algunos dominios, como los teléfonos móviles; y especialmente para el uso de la luz (pares de lecturas o escrituras). Además, algunos desarrolladores encuentran abrumador la API de Jackson.
Por todas estas razones, decidimos crear una biblioteca mucho más simple y más pequeña, que admite un subconjunto de funcionalidad, llamado Jackson JR. Se basa en la API de transmisión de Jackson, pero no depende de Databind. Como resultado, su tamaño (tanto jar como uso de memoria de tiempo de ejecución) es considerablemente más pequeña; y su API es muy compacta.
Si desea ayudar con Jackson Project, consulte la contribución.
También es posible que desee ver:
Los componentes de Jackson son compatibles con la comunidad de Jackson a través de listas de correo, foro Gitter, problemas de GitHub. Ver contribuyendo para todos los detalles.
Además del soporte comunitario gratuito (para todos), el soporte empresarial, que comienza con la versión 2.10, está disponible como parte de la suscripción de TidElift para los componentes (la mayoría) de Jackson.
Los mantenedores de Jackson y miles de otros paquetes están trabajando con TidElift para ofrecer soporte y mantenimiento comerciales para las dependencias de código abierto que utiliza para construir sus aplicaciones. Ahorre tiempo, reduzca el riesgo y mejore la salud del código, al tiempo que paga a los mantenedores de las dependencias exactas que usa. Aprende más.
El mecanismo recomendado para informar las posibles vulnerabilidades de seguridad sigue a los llamados "plan de divulgación coordinada" (ver definición de DCP para la idea general). El primer paso es presentar un contacto de seguridad de TidElift: TidElift enrutará todos los informes a través de su sistema a los mantenedores de paquetes relevantes e iniciará el proceso que evaluará la preocupación y emitirá posibles correcciones, enviará avisos de actualización, etc. Tenga en cuenta que no necesita ser un suscriptor de TidElift para presentar un contacto de seguridad.
Alternativamente, también puede informar posibles vulnerabilidades a info en la dirección postal de COM de FASTERXML. Tenga en cuenta que presentar un problema para ir con el informe está bien, pero si lo hace, no incluya detalles del problema de seguridad en el tema, sino solo en el contacto por correo electrónico. Esto es importante para darnos tiempo para proporcionar un parche, si es necesario, para el problema.
Los errores de Jackson deben informarse contra el componente que afectan: por este motivo, el rastreador de problemas no está habilitado para este proyecto. Si no está seguro de qué problema de proyecto específico afecta, el componente más probable es jackson-databind , por lo que usaría Jackson Databind Problem Tracker.
Para sugerencias y nuevas ideas, pruebe las ideas futuras de Jackson
Para los usuarios por primera vez hay muchos buenos tutoriales de uso de Jackson, incluidos los tutoriales de uso general / JSON:
y tutoriales más específicos:
Se han publicado los siguientes informes sobre los componentes de Jackson
Dado que probablemente desee opiniones de los desarrolladores de Java no relacionados con el proyecto Jackson, con respecto a qué biblioteca usar, aquí hay enlaces a algunas de las comparaciones independientes existentes: