¿Cómo puedo guardar una List en una entidad?
Estoy guardando una entidad que se ve así:
@Entity
data class Entity(
@PrimaryKey val id: Int,
val productPresentationList: List<int>,
val supplierComparePriceList: List<suppliercompareprice>
)
Y cuando ejecuto la aplicación, obtengo este mensaje de error:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Se esperaba un int pero era BEGIN_OBJECT en la línea 1 columna 3 ruta $[0]
at com.google.gson.Gson.fromJson(Gson.java:975)
at com.google.gson.Gson.fromJson(Gson.java:928)
at com.google.gson.Gson.fromJson(Gson.java:877)
at com.yopdev.wabi2b.db.Converters.restoreProductPresentation(Converters.kt:162)
at com.yopdev.wabi2b.db.dao.CartDao_Impl$6.call(CartDao_Impl.java:281)
at com.yopdev.wabi2b.db.dao.CartDao_Impl$6.call(CartDao_Impl.java:262)
at androidx.room.CoroutinesRoom$Companion$createFlow$1$1$1.invokeSuspend(CoroutinesRoom.kt:128)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
Después de eso, intenté usar un convertidor como este:
@TypeConverter
fun restoreProductPresentation(listOfString: String): List<int> =
Gson().fromJson(listOfString, object : TypeToken<><int>>() {}.type)
@TypeConverter
fun saveProductPresentation(list: List<int>): String =
Gson().toJson(list)
Desafortunadamente, eso tampoco funcionó.
¿Cómo puedo lograr esto?
davy.ai
El mensaje de error sugiere que hay un problema con la sintaxis JSON de los datos que se están recuperando de la base de datos. Específicamente, la aplicación parece esperar un int pero en su lugar encuentra un objeto en la línea 1 columna 3 ruta $[0].
Para resolver este problema, puede modificar su código existente para actualizar la lógica de conversión de tipo para el campo
productPresentationList
. Aquí hay una versión actualizada de las funcionesTypeConverter
que puede usar:Además de actualizar las funciones
TypeConverter
, también puede actualizar la claseEntity
para especificar el tipo correcto para el campoproductPresentationList
. Aquí está el código actualizado para la claseEntity
:Con estos cambios realizados, la aplicación debería ser capaz de recuperar y almacenar correctamente la instancia de entidad sin encontrar errores de sintaxis JSON.