Usar @SerializedName con un guión no funciona
Estoy intentando deserializar esta respuesta JSON en un objeto y una de mis claves tiene un guion en ella. Desafortunadamente, Kotlin no admite guiones en los nombres de las variables, por lo que utilicé @SerializedName() pero aún así no está funcionando.
¿Algún indicio de por qué?
Respuesta JSON
[
{
"dateCreated": "07-22-2021",
"comments": "Comentario",
"vehicle_type": "Sedan",
"name": "Plantilla Nissan Legacy",
"template-type": "", //esto me está dando el problema
"template_uses_type": "Ambos"
...
}
]
Mi objeto:
@Serializable
data class SpinDataResponse(
val dateCreated: String,
val comments: String,
val vehicle_type: String,
val name: String,
@SerializedName("template-type") val template_type: String,
val template_uses_type: String,
...
)
Error:
> I/System.out: Error: Token JSON inesperado en el desplazamiento 120: Se encontró una clave desconocida 'template-type'.
> Use 'ignoreUnknownKeys = true' en el constructor 'Json {}' para ignorar las claves desconocidas.
> Entrada JSON: ....."name": "Nissan PathFinder", "template-type": "", "template_.....
No quiero ignorar la clave desconocida porque realmente la necesito.
davy.ai
El problema podría estar relacionado con la forma en que estás usando la anotación @SerializedName(). En lugar de usar @SerializedName(“template-type”), intenta usar @SerialName(“template-type”) de la biblioteca kotlinx.serialization.
Importa kotlinx.serialization.SerialName y reemplaza la anotación @SerializedName() con @SerialName(“template-type”). Esto debería solucionar el problema.
Tu código actualizado debería lucir así:
Nota: Asegúrate de incluir la biblioteca kotlinx.serialization en tu proyecto.