iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0

開頭

以前有 JSONObject、Gson、Jackson,但現在 Kotlin 也自己出了一套 Kotlinx.serialization,只能說官方有支援真舒服,一起來體驗 Kotlinx.serialization 的強大吧!。

安裝套件

implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-protobuf:1.2.1"

在 Data class 中使用

只要在 Data class 上面加上@Serializable,這樣就能用序列化,是不是很棒呢

@Serializable
data class CreateNote(
    val content: String = BaseConstants.EMPTY_STRING,
    val readPermission: String = BaseConstants.OWNER,
    val writePermission: String = BaseConstants.OWNER,
    val commentPermission: String = BaseConstants.OWNER,
)

物件轉字串

使用Json.encodeToString()

  1. 先把CreateNote建立起來,這樣就能得到createNote的物件
    val createNote = CreateNote(
        content = "這邊是要上傳的文字"
    )
    
  2. 因為我們有在 Data class 上面加上@Serializable,所以就會看到 Data class 可以使用.serializer(),如此一來就拿到字串啦
    val json: String = Json.encodeToString(CreateNote.serializer(), createNote)
    

字串轉物件

使用Json.decodeFromString()

  1. API 回傳預期會拿到一個字串,所以我們要把這個字串轉成想要的物件
    val createNote: CreateNote = Json.decodeFromString(CreateNote.serializer(), responseBody)
    

上一篇
111/25 - 上傳筆記(1/4) - OKHttp
下一篇
111/27 - 上傳筆記(3/4) - Post
系列文
聽說 HackMD 開放 API 串接,那麼用 Kotlin 寫個筆記 App 吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言