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?

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();

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.