2 回答
TA贡献1796条经验 获得超7个赞
如果您android architectures从那时开始使用 Room,您可以将TypeConverters类似于@Wheels73 在GSON. 例如,您可以将类型转换器编写为:
class ListTypeConverter {
@TypeConverter fun fromStringToList(stringValue: String?) : List<String>? {
val listType = object: TypeToken<List<String>>(){}.type
return if(stringValue?.isNotEmpty == true) {
Gson().fromJson(stringValue, listType)
} else null
}
@TypeConverter fun fromListToString(listValue: List<String>?) : String? =
Gson().toJson(listValue ?: return null)
}
并将这个 TypeConverter 添加到您的数据库定义中:
@TypeConverters(ListTypeConverter::class) // add additional using ,
class MyAppDatabase : RoomDatabase() {
// retrieve your DAOs
}
如果您不使用ROOM. 想法是类似的,使用GSON对象并将其转换为或从String以创建列表并将其保存为字段。我认为它在 C# 中也能类似地工作。我不太熟悉,但也许你可以使用
var listString = JsonConvert.SerializeObject(listOfObjectType) 和
var listOfObject = JsonConvert.DeserializeObject<List<ObjectType>>(listString)
TA贡献1859条经验 获得超6个赞
结果我不得不像这样使用 [ignore]:
[Table("Room")]
public class Room
{
[PrimaryKey, AutoIncrement]
public int id { get; set; }
public string RoomName { get; set; }
public string NFC_UId { get; set; }
[Ignore]
public List<Switch> RoomSwitches { get; set; } //note the get and set instead of new list
public Room()
{
}
public getswitches(){} <---
}
我现在在房间类中使用一个函数(用<---标记)在房间从数据库加载后获取开关。
- 2 回答
- 0 关注
- 289 浏览
添加回答
举报
