如何使用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数组列表?的主要内容,如果未能解决你的问题,请参考以下文章