Не удается преобразовать JSONArray в список (Kotlin) - PullRequest
0 голосов
/ 30 мая 2019

Это моя строка:

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

И я хочу, чтобы этот массив был помещен в список объектов в приложении Kotlin для Android.Я попытался сделать это, используя два примера с этого сайта ... Итак, вот мой код (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.Я не знаю, что может пойти не так.Я также пытался изменить arr на arr.toString () везде, и это тоже не сработало.

Также JThread:

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

1 Ответ

1 голос
/ 30 мая 2019

Используйте этот код:

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/

...