如何解析包含多种数据类型的json数组?
How to parse json array which contains multiple data types?
我在 json 数组中从 API 响应中获取两种类型的数据:字符串和 json 对象
JSON::
{
"elements": [
"task.",
"weeks.",
{
"image_url": "https://www.graph-2x.jpg"
}
]
}
data class::
@SerializedName("elements" ) var bodyElements : ArrayList<String> = arrayListOf()
它抛出错误,因为我已经提到数据类型是字符串。谁能建议我如何在 Kotlin 中解析多类型 json 数组?提前致谢。
对于这种特定的 JSON 格式,您可以使用以下格式:
使用Any作为数据类型:
data class ElementsResponse(@SerializedName("elements") val elements: ArrayList<Any>)
并使用响应,检查 Any 是 String
还是 LinkedTreeMap
when(element) {
is String -> {
// task. or weeks.
println("string: $element")
}
is LinkedTreeMap<*, *> -> {
// key: image_url / value: https://www.graph-2x.jpg
println("image_url: ${element["image_url"]}")
}
}
我在 json 数组中从 API 响应中获取两种类型的数据:字符串和 json 对象
JSON::
{
"elements": [
"task.",
"weeks.",
{
"image_url": "https://www.graph-2x.jpg"
}
]
}
data class::
@SerializedName("elements" ) var bodyElements : ArrayList<String> = arrayListOf()
它抛出错误,因为我已经提到数据类型是字符串。谁能建议我如何在 Kotlin 中解析多类型 json 数组?提前致谢。
对于这种特定的 JSON 格式,您可以使用以下格式:
使用Any作为数据类型:
data class ElementsResponse(@SerializedName("elements") val elements: ArrayList<Any>)
并使用响应,检查 Any 是 String
还是 LinkedTreeMap
when(element) {
is String -> {
// task. or weeks.
println("string: $element")
}
is LinkedTreeMap<*, *> -> {
// key: image_url / value: https://www.graph-2x.jpg
println("image_url: ${element["image_url"]}")
}
}