如何使用Gson反序列化Kotlin数组列表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Gson反序列化Kotlin数组列表?相关的知识,希望对你有一定的参考价值。

我想这样反序列化:

MyClass myClass = new Gson().fromJson(jsonStr, MyClass.class);

但是我的对象是被声明为val effectsList = arrayListOf<Effect>()的kotlin对象>

我应该在MyClass.class处传递什么?

跟随https://stackoverflow.com/a/57972855/10116440,我尝试过

        val listEffect:List<Effect> = Gson().fromJson(effectsString, List<Effect>.class)

但是它不起作用

我想像这样反序列化:MyClass myClass = new Gson()。fromJson(jsonStr,MyClass.class);但是我的对象是一个声明为valeffectList = arrayListOf (...)>

答案

您需要使用TypeToken。像这样:

import com.google.gson.Gson
import com.google.gson.reflect.TypeToken


fun main() {
    val gson = Gson()
    val myArrayList = arrayListOf(1, 2, 3)

    val arrayType = object : TypeToken<ArrayList<Int>>() {}.type

    val jsonString = gson.toJson(myArrayList)
    val fromJson: ArrayList<Int> = gson.fromJson(jsonString, arrayType)

    println(fromJson)

}

以上是关于如何使用Gson反序列化Kotlin数组列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Gson @SerializedName 注释在 Kotlin 中反序列化嵌套的 Json API 响应

Kotlin Gson反序列化

如何使用 GSON 反序列化 Array 内的 Double 数组?

如何使用 GSON 或 Java 中的其他 JSON 库反序列化列表?

如何使用GSON反序列化不同对象的数组

Android gson 反序列化成列表