如何将以下 json 插入房间持久性?
Posted
技术标签:
【中文标题】如何将以下 json 插入房间持久性?【英文标题】:How can I insert the following json into room persistence? 【发布时间】:2020-11-29 10:43:12 【问题描述】:在 android 上使用 Room 库时,我发现自己处于以下情况,我正在尝试创建一个商店,但我需要插入金额和相应的项目。但是我不知道如何在房间中保存以下json格式,非常感谢您的帮助
[
"id": 1,
"quantitiy": 3,
"item":
"id": 1,
"name": "Huevos Frescampo X30",
"description": "Huevo Rojo A Insuperable, 30 Unidad(es). 1032680",
"price": 8950,
"createdAt": "2020-08-08T20:13:33",
"updatedAt": "2020-08-08T20:13:33"
,
"id": 2,
"quantitiy": 2,
"item":
"id": 2,
"name": "Banano Criollo",
"description": "Banano Criollo",
"price": 630,
"createdAt": "2020-08-08T20:13:33",
"updatedAt": "2020-08-08T20:13:33"
]
@Entity(tableName = "cart")
data class Cart (
@PrimaryKey
val id: Long,
val quantitiy: Long,
val item: ItemC
)
@Entity(tableName = "item")
data class ItemC (
val id: Long,
val name: String,
val description: String,
val price: Long,
val createdAt: String,
val updatedAt: String
)
【问题讨论】:
【参考方案1】:在assets文件夹中创建一个json文件
class MockItemFactory constructor(
private val application: Application
)
companion object
const val KEY_FIRST_START = "FIRST_START"
fun generateMockList(): List<Cart>
val response = application.assets.readAssetsFile("response.json")
return GsonBuilder().create().fromJson(response, Array<Cart>::class.java).asList()
private fun AssetManager.readAssetsFile(fileName: String): String =
open(fileName).bufferedReader().use it.readText()
并在创建数据库类时使用 dao
在数据库类中插入这些项目,或者在使用 KEY_FIRST_START
的 Activity 中插入这些项目,以便仅用你的项目填充一次
【讨论】:
我得到了这个列表,但它并没有解决我的问题,我的想法是能够在房间里制作相同的模型:([InvoiceItems(quantitiy=3, item=Item(id=1, name=Huevos Frescampo X30, description=Huevo Rojo A Insuperable, 30 Unidad(es). 1032680, price=8950, img_url=null, createdAt=2020-08-08T20:13:33, updatedAt=2020-08-08T20:13:33)), InvoiceItems(quantitiy=2, item=Item(id=2, name=Banano Criollo, description=Banano Criollo, price=630, img_url=null, createdAt=2020-08-08T20:13:33, updatedAt=2020-08-08T20:13:33))] 2020-08-09
由于我必须插入,获取,遵循json对象的相同模型,问题正是在关联房间中的实体以上是关于如何将以下 json 插入房间持久性?的主要内容,如果未能解决你的问题,请参考以下文章
房间持久性:错误:实体和 Pojos 必须有一个可用的公共构造函数