我正在使用Jetpack Compose创建一个表格部分,该表格从JSON反序列化数据。
目前,我只是尝试显示数据(表格格式和清理将在以后进行,所以你可以忽略那部分)。一切都还好,直到我遇到表格行值为数组的部分时出现了错误。我得到了这个错误:
期望类kotlinx.serialization.json.JsonObject作为...TableRow的序列化主体,但得到了类kotlinx.serialization.json.JsonArray
这是被解析用于此表格的测试JSON的一部分:
这是我目前的代码。我只是试图发布两行数据: 一行是列标题, 一行是所有行数据(此时不需要漂亮的外观 - 我只是想完成映射)。
注意:标题和表列标题工作正常,出问题的是表格数据。
目前,我只是尝试显示数据(表格格式和清理将在以后进行,所以你可以忽略那部分)。一切都还好,直到我遇到表格行值为数组的部分时出现了错误。我得到了这个错误:
期望类kotlinx.serialization.json.JsonObject作为...TableRow的序列化主体,但得到了类kotlinx.serialization.json.JsonArray
这是被解析用于此表格的测试JSON的一部分:
{
"title": "TRANSACTION HISTORY",
"type": "Table",
"names": [
"Date",
"Amount",
"Lender",
"Borrower"
],
"values": [
[
"07\/01\/2014",
"$315,000",
"Steve's Lending Co.",
"Glenn Danzig"
],
[
"10\/13\/2011",
"$236,000",
"Feet Company",
"Marcus Toeswater"
]
]
},
{
"title": "ASSESSMENT & TAX",
"type": "Table",
"names": [
"Year",
"Property Taxes",
"Tax Assessment"
],
"values": [
[
"2017",
"$6,068",
"$395,000"
],
[
"2016",
"$5,864",
"$372,000"
],
[
"2015",
"$5,609",
"$341,500"
]
]
},
这是我目前的代码。我只是试图发布两行数据: 一行是列标题, 一行是所有行数据(此时不需要漂亮的外观 - 我只是想完成映射)。
@Serializable
@SerialName("Table")
@Parcelize
data class TableSection(
override val title: String? = null,
@SerialName("names")
val columnHeader: ArrayList<String?> = arrayListOf(),
@SerialName("values")
val tableData: ArrayList<TableRow> = arrayListOf(),
) : Section() {
@Composable
override fun Content(modifier: Modifier) {
return Column {
Row {
columnHeader.map {
Text(it ?: "")
}
}
Row {
tableData.map { row ->
row.tableRowValues.map { value ->
Text(value ?: "")
}
}
}
}
}
}
@Serializable
@Parcelize
data class TableRow(
@Serializable
val tableRowValues: ArrayList<String?> = arrayListOf(),
) : Parcelable
注意:标题和表列标题工作正常,出问题的是表格数据。