Gson ignorando las entradas del mapa con valor = nulo

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}

¿Cómo consigo que incluya todas las entradas?

m2o
fuente

Respuestas:

299

Consulte la Guía del usuario de Gson - Soporte de objetos nulos :

El comportamiento predeterminado que se implementa en Gson es que los campos de objetos nulos se ignoran. Esto permite un formato de salida más compacto; sin embargo, el cliente debe definir un valor predeterminado para estos campos ya que el formato JSON se vuelve a convertir a su forma Java.

Así es como configuraría una instancia de Gson para generar nulos:

Gson gson = new GsonBuilder().serializeNulls().create();
Alois Cochard
fuente
10
El manual debería estar más optimizado para la búsqueda. No voy a leer todo cuando uso una pequeña cantidad de hazañas. Este fue el primer resultado en google. Se solucionó mi problema.
Mathijs Segers
1
@MathijsSegers Algunas de las bibliotecas fantásticas no tienen documentación. Tener tantos problemas para revisar su código fuente (que nuevamente es con muchos patrones de construcción y todo).
pinkpanther
13
@MathijsSegers Y esta es la belleza de SO y Google. Puedo buscar en Google "gson ignore null" y encontrar esta respuesta en 3 segundos en lugar de tener que buscar el manual y una respuesta en él.
joshden
2
¿Cómo incluir solo un campo NULL, no todos los campos NULL dentro de la clase? ¿Hay alguna anotación que pueda agregar sobre el campo requerido?
Salam El-Banna
¡Esta solución parece razonable y esperaba que funcionara! pero no lo hace! ¿algunas ideas?
Arman Ramezanzadeh