字符串数组的数组需要包含在一起。对象就是这样
data class Foo (
@SerializedName("bar") val bar: ArrayList<ArrayList<String>>,
)
它并不一定需要是ArrayList。数组也可以使用。
data class Foo (
@SerializedName("bar") val bar: Array<Array<String>>,
)
哪个更容易映射这个json数据
{
"bar": [
["a", "b"],
["a1", "b2", "c2"],
["a3", "b34", "c432"]
]
}
使用kotlin实验qazxsw poi在使用proguard编译时崩溃应用程序
如何在“writeToParcel”中编写并在“构造函数”中读取?
Parcelize
你不能直接为data class Foo (
@SerializedName("bar") val bar: ArrayList<ArrayList<String>>,
) : Parcelable {
constructor(source: Parcel) : this(
// ?????
)
override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) {
// ?????
}
}
Parcelable
直接创建List
,所以一个解决方案是将你想要的List
的一个子类作为List
并将其作为最终列表类型。怎么样?退房如下:
让我们首先创建我们的内部String类List,如下所示:
Parcelable
我们在这里所做的是创建我们的class StringList() : ArrayList<String>(), Parcelable {
constructor(source: Parcel) : this() {
source.createStringArrayList()
}
override fun describeContents() = 0
override fun writeToParcel(dest: Parcel, flags: Int) {
dest.writeStringList(this@StringList)
}
companion object {
@JvmField
val CREATOR: Parcelable.Creator<StringList> = object : Parcelable.Creator<StringList> {
override fun createFromParcel(source: Parcel): StringList = StringList(source)
override fun newArray(size: Int): Array<StringList?> = arrayOfNulls(size)
}
}
}
parcelable,以便我们可以在任何端点使用它。
因此,最终数据类将具有以下实现:
ArrayList<String>
注意:这是基于O.P.的简单实现,您可以根据您的要求进行任何自定义。