Pergunta

Depois de pesquisar através de algumas bibliotecas existentes para JSON, eu finalmente acabou com esses dois:

  • Jackson
  • O Google GSon

Eu sou um pouco parcial em relação GSON, mas o word na net é que GSon sofre de uma determinada celeste desempenho problema (versão de Setembro de 2009).

Eu estou continuando minha comparação;entretanto, eu estou procurando ajuda para fazer minha mente.

Foi útil?

Solução

Fiz essa pesquisa na última semana e acabei com as mesmas 2 bibliotecas. Enquanto estou usando a primavera 3 (que adota Jackson em sua visão JSON padrão 'Jacksonjsonview') Era mais natural para mim fazer o mesmo. Os 2 Lib são praticamente os mesmos ... no final, eles simplesmente mapeiam para um arquivo JSON! :)

Enfim, como você disse Jackson tem um A + em desempenho e isso é muito importante para mim. O projeto também é bastante ativo, como você pode ver de sua página da web E esse é um sinal muito bom também.

Outras dicas

Jackson e Gson são as mais completas Java JSON pacotes em relação à real de enlace de dados de suporte;muitos outros pacotes de apenas fornecer primitivo Mapa/Lista (ou equivalente modelo de árvore) enlace.Ambos têm suporte completo para tipos genéricos, assim, que um número suficiente de configuração para vários casos de uso mais comuns.

Desde que eu estou mais familiarizado com Jackson, aqui estão alguns aspectos onde eu acho que Jackson tem suporte mais completo do que Gson (desculpas se eu perder uma Gson recurso):

  • Extensa anotação de apoio;incluindo herança completa e avançada "mistura" de anotações bloco de anotações com uma classe para os casos onde você não pode adicionar diretamente a eles)
  • Streaming (incremental) de leitura, de escrita, de desempenho ultra elevado (ou memória-limitado) casos de uso;pode misturar-se com os dados de ligação (bind sub-árvores) -- EDITAR:versões mais recentes do Gson também incluem streaming de leitor
  • Modelo de árvore de DOM (como o access);pode converter entre vários modelos (árvore <-> objeto java <-> stream)
  • Pode usar qualquer um dos construtores (ou estáticos métodos de fábrica), não apenas um construtor padrão
  • Campo e getter/setter de acesso (anterior gson versões usado apenas campos, isso pode ter alterado)
  • Fora-da-caixa de JAX-RS apoio
  • Interoperabilidade:também pode usar anotações JAXB, tem apoio/work-arounds pacotes comuns (joda, ibatis, cglib), JVM línguas (groovy, clojure, scala)
  • Capacidade de força estática (declarado), tipo de tratamento para a saída
  • Suporte para anular a serialização de tipos polimórficos (Jackson 1.5) -- pode serializar E desserializar coisas como a Lista corretamente (com outro tipo de informação)
  • Suporte integrado para o conteúdo binário (base64 para/a partir de JSON Cordas)

O GSON 1.6 agora inclui uma API de streaming de baixo nível e um novo analisador que é realmente mais rápido que Jackson.

Adicionando a outras respostas já fornecidas acima. Se a insensividade do caso for de alguma importância para você, use Jackson. O GSON não suporta insensibilidade ao caso para nomes -chave, enquanto Jackson.

Aqui estão dois links relacionados

(Não) Suporte de sensibilidade ao caso em GSON:GSON: Como obter um elemento insensível ao caso da JSON?

Suporte de sensibilidade ao caso em Jacksonhttps://gist.github.com/electrum/1260489

Parece que o GSON não apoia o JAXB. Ao usar a classe JAXB Annotated para criar ou processar a mensagem JSON, posso compartilhar a mesma classe para criar a interface de serviço da Web RESTful usando o Spring MVC.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top