如何修复嵌套数组
How to fix nested arrays
我有一个数据模型class类别模型:
@Serializable
data class CategoryModel (val name: String, val items: ArrayList<String>) : java.io.Serializable {}
我正在尝试使用序列化,这样我就可以将这个 class 中的数据存储到一个 Bundle 中,以便与另一个 class:
共享
private fun displayCategoryItems(cat: CategoryModel) {
val categoryItemsIntent = Intent(this, CategoryItemsActivity::class.java)
val data: String = Json.encodeToString(cat)
categoryItemsIntent.putExtra(categoryObjKey, data)
startActivityForResult(categoryItemsIntent,mainActivityReqCode)
}
我注意到它开始用数组括号做奇怪的事情,看起来当我尝试反序列化它时,项目 ArrayList 正在转换为字符串。所以而不是
"items": "[1, 2]"
我明白了
"items":["[1, [2]]"]
我做错了什么?
把实现了Serializable的对象放在extras里就好了:
private fun displayCategoryItems(cat: CategoryModel) {
val categoryItemsIntent = Intent(this,
CategoryItemsActivity::class.java)?.apply{
putExtra(categoryObjKey, data)
}
startActivityForResult(categoryItemsIntent,mainActivityReqCode)
}
或者这样传递:
private fun displayCategoryItems(cat: Any) {
val categoryItemsIntent = Intent(this,
CategoryItemsActivity::class.java)?.apply{
putExtra(categoryObjKey, cat as CategoryModel)
}
startActivityForResult(categoryItemsIntent,mainActivityReqCode)
}
我有一个数据模型class类别模型:
@Serializable
data class CategoryModel (val name: String, val items: ArrayList<String>) : java.io.Serializable {}
我正在尝试使用序列化,这样我就可以将这个 class 中的数据存储到一个 Bundle 中,以便与另一个 class:
共享 private fun displayCategoryItems(cat: CategoryModel) {
val categoryItemsIntent = Intent(this, CategoryItemsActivity::class.java)
val data: String = Json.encodeToString(cat)
categoryItemsIntent.putExtra(categoryObjKey, data)
startActivityForResult(categoryItemsIntent,mainActivityReqCode)
}
我注意到它开始用数组括号做奇怪的事情,看起来当我尝试反序列化它时,项目 ArrayList 正在转换为字符串。所以而不是
"items": "[1, 2]"
我明白了
"items":["[1, [2]]"]
我做错了什么?
把实现了Serializable的对象放在extras里就好了:
private fun displayCategoryItems(cat: CategoryModel) {
val categoryItemsIntent = Intent(this,
CategoryItemsActivity::class.java)?.apply{
putExtra(categoryObjKey, data)
}
startActivityForResult(categoryItemsIntent,mainActivityReqCode)
}
或者这样传递:
private fun displayCategoryItems(cat: Any) {
val categoryItemsIntent = Intent(this,
CategoryItemsActivity::class.java)?.apply{
putExtra(categoryObjKey, cat as CategoryModel)
}
startActivityForResult(categoryItemsIntent,mainActivityReqCode)
}