Gson

James Lin
3 min readJul 16, 2018

--

如何使用 Gson 來轉換 JSON,假設我們有一個 JSON 長這樣:

{
"id": 1,
"first_name": "Sebastian",
"last_name": "Eschweiler",
"family":{"Father":"Tom","Son":"Andrew",Mother:"Cherry"},
"email": "sebastian@codingthesmartway.com"
}

Gson 確實可以很輕易地轉換簡易的 JSON。

那我只需要取出 Family 的資料的時候怎麼辦呢?

首先,在Gradle Import Gson

dependencies {
implementation 'com.google.code.gson:gson:2.8.5'
}

接著 Create data class

data class Family(var father: String, var son: String, var mother: String) {
}

Create 一個知道如何解析的 解析器

class ConvertFamily : JsonDeserializer<Family> {
override fun deserialize(json: JsonElement?, typeOfT: Type?, context: JsonDeserializationContext?): Family {
var family: JsonObject = json!!.asJsonObject.get("family").asJsonObject
var father = family.get("Father").asString
var son = family.get("Son").asString
var mother = family.get("Mother").asString
return Family(father, son, mother)
}
}

在 Main Activity 使用:

var gson = GsonBuilder()
.registerTypeAdapter(Family::class.java, ConvertFamily())
.create()
var family = gson.fromJson(FackJSON.JSONData, Family::class.java)
var result = family.father + "\n" + family.son + "\n" + family.mother
textView.text = result

結果:

GitHub

--

--

James Lin
James Lin

No responses yet