Esta é a página inicial do projeto Jackson.
(Nota: Para informações de lançamento atualizadas, consulte Jackson lançamentos)
Jackson é conhecido como "The Java JSON Library" ou "O melhor analisador JSON para Java". Ou simplesmente como "JSON for Java".
More than that, Jackson is a suite of data-processing tools for Java (and the JVM platform), including the flagship streaming JSON parser / generator library, matching data-binding library (POJOs to and from JSON) and additional data format modules to process data encoded in Avro, BSON, CBOR, CSV, Smile, (Java) Properties, Protobuf, TOML, XML or Yaml; E mesmo o grande conjunto de módulos de formato de dados para suportar tipos de dados de tipos de dados amplamente utilizados, como goiaba, joda, pcollections e muitos, muitos mais (veja abaixo).
Enquanto os componentes principais reais vivem sob seus próprios projetos - incluindo os três pacotes principais (streaming, banco de dados, anotações); Bibliotecas de formato de dados; Bibliotecas de tipo de dados; Provedor Jax-RS; e um conjunto diverso de outros módulos de extensão - este projeto atua como o hub central para vincular todas as peças.
Um bom companheiro para este readme é o Jackson Project FAQ.
Jackson Suite tem duas versões principais: 1.x é preterido e nenhuma versões é lançada; 2.x é a versão desenvolvida ativamente. Essas duas versões principais usam diferentes pacotes Java e IDs de artefatos do Maven, para que não sejam mutuamente compatíveis, mas podem coexistir pacificamente: um projeto pode depender de Jackson 1.x e 2.x, sem conflitos. Isso é por design e foi escolhido como estratégia para permitir a migração mais suave de 1.x para 2.x.
As mais recentes versões estáveis dessas filiais são:
A maneira recomendada de usar Jackson é através de repositórios Maven; Os lançamentos são feitos para o Central Maven Repository (CMR). As páginas wiki de projetos individuais às vezes também contêm links de download direto, apontando para o CMR.
Notas de liberação para versões 2.x são encontradas na página Jackson Liberes.
A maioria dos projetos listados abaixo é liderada pela equipe de desenvolvimento de Jackson; Mas alguns de outros membros da comunidade em geral de Jackson. Tentamos manter a versão de módulos compatíveis para reduzir a confusão sobre quais versões funcionam juntas.
Os módulos principais são a base sobre a qual as extensões (módulos) se baseiam. Atualmente, existem 3 módulos (como Jackson 2.x):
streaming ; Depende dos pacotes streaming e annotations Essas extensões são Module plug-in jackson (registrados com ObjectMapper.registerModule() ) e adicionam suporte para tipos de dados de várias bibliotecas Java comumente usadas, adicionando serializadores e deserializadores para que ObjectWriter pacote Jackson databind ( ObjectMapper / ObjectReader ) possa ler e escrever esses tipos.
Os módulos de dados do Datatype diretamente mantidos pela equipe Jackson estão nos seguintes repositórios do GitHub:
jackson-module-parameter-names : Módulo que adiciona suporte ao uso de um novo recurso JDK8, capacidade de acessar nomes de parâmetros de construtor e método, para permitir omitir @JsonProperty .jackson-datatype-jsr310 : Suporte para "Java 8 Datas" (aquelas adicionadas no JDK 8)jackson-datatype-jdk8 : Suporte para tipos de dados JDK 8 que não sejam tipos de data/hora, incluindo OptionalMoney , CurrencyUnit )javax.json ) e "new" ( jakarta.json ):jakarta.json ( adicionado em Jackson 2.12.2 )javax.jsonJSONObject , JSONArrayAlém disso, estamos cientes de módulos adicionais que não são mantidos diretamente pela equipe Core Jackson:
jackson-dataformat-protobuf , que adiciona suporte para codificar/decodificar o conteúdo do Protobuf, mas que não depende da biblioteca Java Protobuf padrãocom.github.caligin.tinytypes , artefato tinytypes-jackson )org.vertx.java.core.json.JsonObject Objects (tipos de nó org.json reembalados) Os provedores Jackson Jax-RS possuem manipuladores para adicionar suporte ao DataFormat para implementações Jax-RS (como Jersey, Restasy, CXF). Os provedores implementam MessageBodyReader e MessageBodyWriter . Os formatos suportados atualmente incluem JSON , Smile , XML , YAML e CBOR .
Os módulos de formato de dados oferecem suporte para formatos de dados que não sejam JSON. A maioria deles simplesmente implementa abstrações de API streaming , para que o componente do banco de dados possa ser usado como está; Alguns oferecem (e poucos exigem) funcionalidade adicional do nível databind para lidar com esquemas.
Atualmente, os módulos de formato de dados são totalmente utilizáveis e suportados (o número da versão entre parênteses, se incluído, é a primeira versão do Jackson 2.x a incluir o módulo; se estiver ausente, incluído no 2.0)
streaming mais suporte adicional databind -suporte para esquemas AVROstreaming API, com adições opcionais databind de conveniênciaAvrostreaming , sem alterações para databindstreaming e databindstreaming e databind . Semelhante ao modo Jaxb 'Code-First "(sem suporte para" XML Schema First ", mas pode usar feijões JAXB)streamingExistem também outros módulos de formato de dados, fornecidos por desenvolvedores fora da equipe Jackson Core:
MsgPack ) FormatoAs anotações de Jackson definem propriedades pretendidas e manuseio esperado para Pojos, e além de Jackson usar isso para ler/escrever JSON e outros formatos, também permite a geração de esquemas externos. Parte dessa funcionalidade está incluída nas extensões de formato de dados acima mencionadas; Mas também existem muitas ferramentas de esquema independentes, como:
Outros módulos totalmente utilizáveis da equipe FASTERXML incluem:
@JacksonInject padrão (ou além de)JAXB como uma alternativa (além de ou em vez de) anotações padrão de Jackson@JacksonInject Anotation@JsonProperty .Embora o Jackson Databind seja uma boa opção para a ligação de dados de uso geral, sua sobrecarga de pegada e inicialização pode ser problemática em alguns domínios, como telefones celulares; e especialmente para uso da luz (algumas leituras ou gravações). Além disso, alguns desenvolvedores acham a API completa de Jackson esmagadora.
Por todos esses motivos, decidimos criar uma biblioteca muito mais simples e menor, que suporta um subconjunto de funcionalidade, chamado Jackson Jr. Ele se baseia na API de streaming de Jackson, mas não depende do banco de dados. Como resultado, seu tamanho (JAR e o uso da memória de tempo de execução) é consideravelmente menor; e sua API é muito compacta.
Se você deseja ajudar no projeto Jackson, confira contribuições.
Você também pode querer conferir:
Os componentes de Jackson são apoiados pela comunidade Jackson através de listas de discussão, fórum Gitter, problemas do Github. Veja contribuindo para obter detalhes completos.
Além do suporte gratuito (para todos) da comunidade, o suporte corporativo - iniciando com a versão 2.10 - está disponível como parte da assinatura do Tidelift para (a maioria) de componentes Jackson.
Os mantenedores de Jackson e milhares de outros pacotes estão trabalhando com o Tidelift para fornecer suporte comercial e manutenção para as dependências de código aberto que você usa para criar seus aplicativos. Economize tempo, reduza o risco e melhore a saúde do código, enquanto paga aos mantenedores das dependências exatas que você usa. Saber mais.
O mecanismo recomendado para relatar possíveis vulnerabilidades de segurança segue o chamado "plano de divulgação coordenado" (consulte a definição do DCP para uma idéia geral). A primeira etapa é arquivar um contato de segurança Tidelift: o Tidelift direcionará todos os relatórios por meio de seu sistema para mantenedores de pacotes relevantes e iniciará o processo que avaliará a preocupação e emitirá possíveis correções, enviará avisos de atualização e assim por diante. Observe que você não precisa ser um assinante Tidelift para arquivar um contato de segurança.
Como alternativa, você também pode relatar possíveis vulnerabilidades às info no endereço de correspondência Fasterxml Dot com. Observe que a apresentação de um problema a seguir é bom, mas se você fizer isso, não inclua detalhes do problema de segurança no problema, mas apenas no contato por e -mail. Isso é importante para nos dar tempo para fornecer um patch, se necessário, para o problema.
Os bugs de Jackson precisam ser relatados contra o componente que afetam: por esse motivo, o rastreador de problemas não está ativado para este projeto. Se você não tiver certeza de quais problemas específicos do projeto afeta, o componente mais provável é jackson-databind , para que você usaria o rastreador de problemas do Jackson Databind.
Para sugestões e novas idéias, tente o Jackson Future Ideas
Para usuários iniciantes, existem muitos bons tutoriais de uso de Jackson, incluindo tutoriais gerais de uso / json:
e tutoriais mais específicos:
Os relatórios a seguir foram publicados sobre os componentes de Jackson
Como você provavelmente deseja opiniões de desenvolvedores de Java não relacionados ao Jackson Project, sobre qual biblioteca usar, aqui estão os links para algumas das comparações independentes existentes: