es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

GSON mapea planamente a otros campos

Entonces tengo una aplicación de Android que utiliza Retrofit para la API. Tengo una clase que se ve así:

class Foo {
   String bar;
   Map<string, string=""> map;
}

Cuando GSON crea un JSON, se ve así:

{
   "bar":"valor",
   "map": {
      "clave1":"valor1"
   }
}

¿Sería posible cambiar la serialización del JSON a:

{
   "bar":"valor",
   "clave1":"valor1"
}

Gracias.</string,>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible cambiar la serialización JSON al formato deseado. Puedes usar la anotación @JsonAnyGetter en GSON para agregar dinámicamente entradas al objeto JSON.

    Aquí tienes un ejemplo de cómo podrías modificar la clase Foo para lograr el formato JSON deseado:

    class Foo {
       String bar;
       Map<string, string=""> map;
    
       @JsonAnyGetter
       public Map<string, string=""> getMap() {
          return map;
       }
    }
    

    Con esta modificación, GSON llamará al método getMap() durante la serialización e incluirá su contenido como propiedades directas del objeto JSON. Por ejemplo:

    {
       "bar":"value",
       "key1":"value1"
    }
    

    Debes tener en cuenta que si map está vacío, el objeto JSON resultante solo contendrá la propiedad bar.

    ¡Espero que esto te ayude! Hazme saber si tienes alguna pregunta adicional.</string,></string,>

Comments are closed.