Depois de pesquisar em algumas bibliotecas existentes por JSON, finalmente acabei com estas duas:
- Jackson
- Google GSon
Eu sou um pouco parcial em relação à GSON, mas a palavra na rede é que a GSon sofre de um certo problema de desempenho celestial (em setembro de 2009).
Eu continuo minha comparação; Enquanto isso, estou procurando ajuda para me decidir.
Respostas:
Eu fiz essa pesquisa na última semana e acabei com as mesmas 2 bibliotecas. Como estou usando o Spring 3 (que adota Jackson na visualização Json padrão ' JacksonJsonView '), era mais natural para mim fazer o mesmo. As 2 libs são praticamente as mesmas ... no final, elas simplesmente mapeiam para um arquivo json! :)
De qualquer forma, como você disse, Jackson tem um desempenho positivo e isso é muito importante para mim. O projeto também é bastante ativo, como você pode ver na página deles, e isso também é um sinal muito bom.
fonte
Jackson e Gson são os pacotes Java JSON mais completos em relação ao suporte real à ligação de dados; muitos outros pacotes fornecem apenas ligação primitiva de Mapa / Lista (ou modelo de árvore equivalente). Ambos têm suporte completo para tipos genéricos, além de configurabilidade suficiente para muitos casos de uso comuns.
Como eu estou mais familiarizado com Jackson, aqui estão alguns aspectos em que acho que Jackson tem um suporte mais completo que o Gson (desculpas se eu perder um recurso do Gson):
fonte
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.
fonte
Adicionando a outras respostas já fornecidas acima. Se a insensibilidade do caso for de alguma importância para você, use Jackson. O Gson não suporta distinção entre maiúsculas e minúsculas para nomes de chave, enquanto jackson suporta.
Aqui estão dois links relacionados
(Não) Suporte à diferenciação de maiúsculas e minúsculas no Gson: GSON: Como obter um elemento que não diferencia maiúsculas de minúsculas do Json?
Suporte à sensibilidade a casos em Jackson https://gist.github.com/electrum/1260489
fonte
MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES
, adicionadas no Jackson 2.5. Portanto, não há necessidade de adicionar código personalizado para isso.Parece que o GSon não suporta JAXB. Usando a classe anotada JAXB para criar ou processar a mensagem JSON, eu posso compartilhar a mesma classe para criar a interface Restful Web Service usando o Spring MVC.
fonte