无法将JSONArray转换为列表(Kotlin)

时间:2019-05-30 18:47:38

标签: android json parsing kotlin gson

这是我的字符串:

{"array":[{"message":"test1","name":"test2","creation":"test3"},{"message":"test1","name":"test2","creation":"test3"}]}

并且我希望它将该数组放入Android的Kotlin应用程序中的对象列表中。 我尝试使用此站点上的两个示例来做到这一点...这是我的代码(res =该字符串):

val gson = Gson()
val obj = gson.fromJson(res, JsonObject::class.java)
val arr = obj.getAsJsonArray("array")

println(arr.toString())
val list1 : List<JThread> = gson.fromJson(arr, object : TypeToken<List<JThread>>() {}.type)
val list2 = gson.fromJson(arr, Array<JThread>::class.java).asList()

for (x in list1){
   println(x.message)
}
for (x in list2){
   println(x.message)
}   

但是我在x.message中只得到null。我不知道会出什么问题。 我还尝试到各处都将arr更改为arr.toString(),但这也不起作用。

JThread也是:

object JThread {
var message: String? = null
var name: String? = null
var creation: String? = null }     

1 个答案:

答案 0 :(得分:1)

使用此代码:

import com.google.gson.annotations.SerializedName
import com.google.gson.Gson

data class Array(
    @SerializedName("message")
    var message: String,
    @SerializedName("name")
    var name: String,
    @SerializedName("creation")
    var creation: String
)

data class Example(
    @SerializedName("array")
    var array: List<Array>? = null
)

private fun fromJson(json:String):Example{
    return Gson().fromJson<Example>(json, Example::class.java)
}

PS:我是通过以下网站实现的:http://www.jsonschema2pojo.org/