Android 如何使用Room和moshi与Kotlin将JSON对象和JSON数组持久化

Android 如何使用Room和moshi与Kotlin将JSON对象和JSON数组持久化,android,json,kotlin,android-room,moshi,Android,Json,Kotlin,Android Room,Moshi,我有一个JSON对象 { "name": "News", "infos":[ { "title":"hello", "content":"this is the content", "recent":true }, { "title":"Tax", "content":"The European Commission is considering possible tax benefits", "recent":true },

我有一个JSON对象

{ 
"name": "News",
"infos":[
   { "title":"hello",
     "content":"this is the content",
     "recent":true
   },
   { "title":"Tax",
     "content":"The European Commission is considering possible tax benefits",
     "recent":true
   },
   { "title":"Tax",
     "content":"The European Commission is considering possible tax benefits",
   }
]
我需要使用moshi将这个对象与Room(Android)持久化,以将这个对象反序列化到我的数据类中,这些数据类是

@JsonClass(generateAdapter = true)
@Entity(
    tableName = "news"
)

data class News(
    @ColumnInfo(name = "name")
    val name:String = "News",

    val infos:List<Info>,

    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "id")
    val id: Int){
}

@JsonClass(generateAdapter = true)
@Entity(tableName = "info",
    foreignKeys = [
        ForeignKey(entity = News::class, parentColumns = ["id"], childColumns = ["info_id"])
    ],
    indices = [Index("info_id")])
data class Info(
    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "id")
    var id: Int,
    val title : String,
    val content: String,
    val recent: Boolean?,
    @ColumnInfo(name = "info_id")
    val infoId: Int) {

}
@JsonClass(generateAdapter=true)
@实体(
tableName=“新闻”
)
数据类新闻(
@ColumnInfo(name=“name”)
val name:String=“News”,
val信息:列表,
@PrimaryKey(自动生成=真)
@ColumnInfo(name=“id”)
val id:Int){
}
@JsonClass(GenerateDapter=true)
@实体(tableName=“info”,
外键=[
ForeignKey(entity=News::class,parentColumns=[“id”],childColumns=[“info\u id”])
],
索引=[索引(“信息id”)])
数据类信息(
@PrimaryKey(自动生成=真)
@ColumnInfo(name=“id”)
变量id:Int,
val标题:字符串,
val内容:字符串,
val最近:布尔值?,
@ColumnInfo(name=“info\u id”)
val infoId:Int){
}
我还创建了Roomd数据库和我的@dao class@Insert fun。但我得到了这个错误:

error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
    private final java.util.List<com.example.data.Info> infos = null;
错误:无法确定如何将此字段保存到数据库中。可以考虑为其添加类型转换器。
private final java.util.List infos=null;

缺少类型转换器。文件室无法保存复杂的字段类型,如列表、日期、数组等

请参阅:

欢迎来到SO!请阅读,并请考虑添加代码,以使您的答案清晰,谢谢。关于这个话题有很多答案。我想这个问题应该结束了。如果你发现一个重复的问题,你可以将这个问题标记为一个重复的问题,然后投票结束。