android - Kotlin 将对象分组为父子关系
问题描述
我想在 Android 应用程序中实现评论会话。我的 api 给出了这样的评论列表:
"comments": [{'comid':"44", 'postid': "12", 'parentid': "12"},
{'comid':"55", 'postid': "12", 'parentid': "44"},
{'comid':"66", 'postid': "12", 'parentid': "55"}]
这里。第二条和第三条评论分别是子和孙子。如何将其转换为listOf(Comment())
像下面这样的类对象到 parent->children->grandchildren:(基于关系parentid
)
data class Comment(
val comid: String,
val postid: String,
val parentid: String,
val children: List<Comment>)
结果应如下所示:
comments = [ Comment(), Comment(listOf(Child(), Child())),
Comment(listOf(Child(listOf(Grandchild(), Grandchild())))), Comment(), Comment(), ... ]
帮助表示赞赏。
解决方案
如果json字符串以[开头,试试:</p>
var strList:String = "[{\"comments\": [{'comid':\"44\", 'postid': \"12\", 'parentid': \"12\", 'name':\"Alice\", 'content': \"lorem ipsum Alice\"}, \n" +
"{'comid':\"55\", 'postid': \"12\", 'parentid': \"44\", 'name':\"Boby\", 'content': \"lorem ipsum Boby\"},\n" +
"{'comid':\"66\", 'postid': \"12\", 'parentid': \"55\", 'name':\"Cris\", 'content': \"lorem ipsum Cris\"}]}]"
fun transferList() :List<Comment>{
var list:List<Comment> = ArrayList();
val gson = Gson()
val comment: Comment = gson.fromJson(str, Comment::class.java)
list = gson.fromJson(
strList,
object : TypeToken<List<Comment?>?>() {}.getType()
)
return list
}
尝试使用https://github.com/google/gson
data class Comment(
val comid: String,
val postid: String,
val parentid: String,
val name: String,
val content: String,
val comments: List<Comment>){
var str:String = "{\"comments\": [{'comid':\"44\", 'postid': \"12\", 'parentid': \"12\", 'name':\"Alice\", 'content': \"lorem ipsum Alice\"}, \n" +
"{'comid':\"55\", 'postid': \"12\", 'parentid': \"44\", 'name':\"Boby\", 'content': \"lorem ipsum Boby\"},\n" +
"{'comid':\"66\", 'postid': \"12\", 'parentid': \"55\", 'name':\"Cris\", 'content': \"lorem ipsum Cris\"}]}"
fun transfer() :Comment{
val gson = Gson()
val comment: Comment = gson.fromJson(str, Comment::class.java)
return comment
}
}
推荐阅读
- java - 成功注册到应用程序后,Android Activity 没有变化
- python - Python:如何在每个 ID 的日期之间填充行?
- python - VScode自动完成奇怪的行为Python
- python - 如何将 str "oneninetwoninenine" 转换为 19299
- swift - SwiftUI / Firestore 显示您关注/收藏的用户的帖子
- python - python nonlocal - 为什么有时需要它有时不需要
- django - 不允许的方法 (POST):/cbvdelete/5/ 不允许的方法:/cbvdelete/5/
- pandas - Pandas 移动列和删除行
- microsoft-teams - 由于公司政策,供应失败
- excel - VBA 在打开文件时检查今天的日期是否与当前月份的第一天相同,以及单元格范围值是否大于 30,然后运行其余的