Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

212
Vistas
La función de inicio de la clase de datos no se llama cuando el objeto se genera desde GSON en kotlin

Estoy usando Gsson para convertir JSON to Kotlin data class . Al crear un objeto de clase de datos, quiero analizar el valor en el método init . Pero init nunca llamó y los valores del objeto generado son nulos.

 data class Configuration (val groupId:Int, val key:String, val source:String){ val query:String val search:String init { val obj = JSONObject(key) query = obj.getString("q") search = obj.getString("search") } }

Cuando obtuve el objeto de Configuración de Gson , el valor de query y search siempre es null y el bloque de init nunca se ejecutó. También probé el constructor y sin la palabra clave data , los resultados son los mismos.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El bloque init solo se ejecuta cuando se llama al constructor principal. Pero gson no llama al constructor principal cuando analiza json para objetar.

Para resolver esto, creo que debería implementar la query y search como un método de obtención o usar el inicio perezoso. Algo como esto:

 data class Configuration(val groupId: Int, val key: String, val source: String) { var query: String = "" get() { if (field == null) { initInternal() } return field } private set var search: String? = null get() { if (field == null) { initInternal() } return field } private set private fun initInternal() { val obj = JSONObject(key) query = obj.getString("q") search = obj.getString("search") } }

o cualquier otro enfoque que se adapte mejor a sus necesidades.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda