我需要你的帮助。我尝试找到没有反序列化的解决方案,但我没有发现任何东西。如果你可以帮助我会很好...所以我有以下JSON文件
"resources": [{
"id": 441988,
"name": "TVA",
"parent": {
"id": 159
},
},
{
"id": 441900,
"name": "Marketing",
"parent": {
"id": 166
},
}]
我用ROOM创建了一个数据库,但是我有一个问题,它不可能保存“父对象的id”
这是我的以下代码:
@Entity(tableName = "resources")
class CategoryBean {
@PrimaryKey
@ColumnInfo(name = "resource_id")
@SerializedName("id")
private var mId: Int = 0
@ColumnInfo(name = "name")
@SerializedName("name")
private var mName: String? = null
@ColumnInfo(name = "parent")
@SerializedName("parent")
private var mParent: ParentBean? = null
fun getId(): Int {
return mId
}
fun getName(): String? {
return mName
}
fun getParent(): ParentBean? {
return mParent
}
fun setParent(parent: ParentBean) {
mParent = parent
}
fun setId(id: Int) {
mId = id
}
fun setName(name: String) {
mName = name
}
在这里,您可以找到我的ParentBean文件
class ParentBean {
@SerializedName("id")
private var mId: Int = 0
fun getId(): Int? {
return mId
}
}
我找到了一个列表的解决方案,但没有找到子对象的解决方案。
谢谢你的时间和帮助。
有以下错误:
Cannot figure out how to save this field into database. You can consider adding a type converter for it.
房间在SQLite数据库之上工作,当您将类注释为@Entity
时,您正在创建一个表,该表的列是根据类的属性定义的,因此您无法直接存储自定义类型(如ParentBean
),你需要注释mParent
属性为@Embedded
:
@Entity(tableName = "resources")
class CategoryBean constructor(
@PrimaryKey
@ColumnInfo(name = "resource_id")
@SerializedName("id")
var mId: Int,
@ColumnInfo(name = "name")
@SerializedName("name")
var mName: String?,
@SerializedName("parent")
@Embedded
var mParent: ParentBean?
)
然后在ParentBean
中为属性定义列名:
data class ParentBean constructor(@SerializedName("id") @ColumnInfo(name = "parent_id")var mId: Int)
资源表将包含以下列:resource_id
,name
,parent_id
来源:https://developer.android.com/training/data-storage/room/defining-data
注意:您无需在Kotlin中手动定义getter和setter。
您的问题是您的JSON数据无效。
"resources": [{
"id": 441988,
"name": "TVA",
"parent": {
"id": 159
}, //This Line has a comma without another field following it
},
{
"id": 441900,
"name": "Marketing",
"parent": {
"id": 166
}, //This Line has a comma without another field following it
}]
整个事情应该被另一组花括号包围(但我假设由于复制和粘贴而被遗漏)。
测试您的JSON数据和POJO的好工具是这个站点:http://www.jsonschema2pojo.org
希望这可以帮助 :)