【问题标题】:How can I insert the following json into room persistence?如何将以下 json 插入房间持久性?
【发布时间】: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
)

【问题讨论】:

    标签: android json sqlite android-room local-database


    【解决方案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对象的相同模型,问题正是在关联房间中的实体
    猜你喜欢
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    相关资源
    最近更新 更多