1. 程式人生 > >Gson將json資料直接轉為集合比如List(Kotlin版)

Gson將json資料直接轉為集合比如List(Kotlin版)

為了演示,我們新建一個簡單的資料類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資料轉為集合