android - 如何将以下 json 插入房间持久性?
问题描述
在 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
)
解决方案
在 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
并在创建数据库类时使用您在数据库类中插入这些项目,或者在 Activity 中使用KEY_FIRST_START
您的项目仅填充一次
推荐阅读
- node.js - node js cron作业在每个月的第一天都不工作
- php - ACF 自定义字段、自定义帖子类型和引导轮播
- flutter - Flutter:强制modalBottomSheet仅在单击按钮时关闭
- javascript - 输入文本框“on the fly”过滤列表
- go - 如何使用 ListenTCP 收听 0.0.0.0:8080
- batch-file - 编辑脚本以便它只为存在的文件创建快捷方式?
- r - 如何更改 R 中空白的千位分隔符?
- r - 如何在 R 中使用特定颜色来组合绘图可视化?
- python-3.x - 运行 model_main_tf2.py 和 exporter_main_v2.py 后模型没有导出。不知道为什么?
- r - Shiny中的表格输出问题