Gson將json資料直接轉為集合比如List(Kotlin版)
阿新 • • 發佈:2019-01-08
為了演示,我們新建一個簡單的資料類Person
資料類Person
data class Person(var name: String = "", var age: Int = 0)
json資料反序列化為普通物件
使用Gson將Json資料直接轉成普通實體類很簡單,如下
Gson().fromJson<Person>(personsJson,Person::class.java)
json資料反序列化為集合
有的時候,我們可能需要直接將一段json資料轉成一個List
例如下面的json資料。
[{"age":1,"name":"yzq"},{"age":2,"name":"yzq"},{"age":3,"name":"yzq"},{"age":4,"name":"yzq"},{"age":5,"name":"yzq"},{"age":6,"name":"yzq"},{"age":7,"name":"yzq"},{"age":8,"name":"yzq"},{"age":9,"name":"yzq"},{"age":10,"name":"yzq"}]
我們先來看看Gson的原始碼說明,註釋已經告訴我們了需要用到TypeToken
將json直接轉為list,通過TypeToken來實現,程式碼如下
private lateinit var newPersons: ArrayList<Person>
val listType = object : TypeToken<ArrayList<Person>>() {}.type
newPersons = Gson().fromJson(personsJson, listType)
我們來列印下反序列化後的newPersons
[Person(name=yzq, age=1), Person(name=yzq, age=2), Person(name=yzq, age=3), Person(name=yzq, age=4), Person(name=yzq, age=5), Person(name=yzq, age=6), Person(name=yzq, age=7), Person(name=yzq, age=8), Person(name=yzq, age=9), Person(name=yzq, age=10)]
這樣我們就完成了直接將json資料轉為集合