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?

m2o
fonte

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();
Alois Cochard
fonte
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