Gson ignorando entradas do mapa com value = null


132
Gson gson = new Gson();

Map<String,Object> map = new HashMap<String, Object>();
map.put("a", 1);
map.put("b", null);

System.out.println(gson.toJson(map)); //prints {"a":1}

Como faço para incluir todas as entradas?

Respostas:


299

Consulte o Guia do usuário do Gson - Suporte a objetos nulos :

O comportamento padrão implementado no Gson é que os campos de objetos nulos são ignorados. Isso permite um formato de saída mais compacto; no entanto, o cliente deve definir um valor padrão para esses campos, pois o formato JSON é convertido novamente em seu formato Java.

Veja como você configuraria uma instância do Gson para gerar nulo:

Gson gson = new GsonBuilder().serializeNulls().create();

10
O manual deve ser mais otimizado para pesquisa. Não vou ler tudo quando uso uma pequena quantidade de talentos. Este foi o primeiro resultado no google. Corrigido meu problema.
Mathijs Segers

1
@MathijsSegers Algumas das fantásticas bibliotecas estão sem documentação. Tendo muitos problemas ao passar pelo código-fonte (que é novamente com muitos padrões de construtores e tudo).
pinkpanther

13
@MathijsSegers E essa é a beleza do SO e do Google. Posso pesquisar no Google "gson ignore null" e encontrar esta resposta em 3 segundos, em vez de precisar encontrar o manual e uma resposta.
Joshden #

2
Como incluir apenas um campo NULL nem todos os campos NULL dentro da classe? Existe uma anotação que eu possa adicionar acima do campo obrigatório?
Salam El-Banna 29/11

esta solução parece razoável e eu esperava que funcionasse! mas não faz! alguma ideia?
Arman Ramezanzadeh 02/02/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.