介绍
本文我们将探讨 Kotlin 如何解析 JSON 数据,如:包括 JSON 的序列化和反序列化,Kotlin 中官方提供了 kotlinx.serialization
库用于 JSON 解析。
什么是 JSON?
JSON (JavaScript Object Notation) 是一种完全独立于具体编程语言的文本格式,易于阅读和编写,也易于计算机解析。JSON 是一种用于存储和传输数据的轻量级格式,当需要在服务器、网页、应用程序间传输数据时,通常会使用 JSON 格式的数据来传输。
JSON 示例
这个示例定义了一个books对象,它是包含3个图书对象的数组:
{
"books": [
{
"title": "Sample Book 1",
"author": "ITmob",
"language": "English",
"pages": 200,
"link": "https://itmob.cn",
},
{
"title": "Sample Book 2",
"author": "ITmob",
"language": "English",
"pages": 200,
"link": "https://itmob.cn",
},
{
"title": "Sample Book 3",
"author": "ITmob",
"language": "English",
"pages": 200,
"link": "https://itmob.cn",
}
]
}
Kotlin 中的 JSON 处理
在 Kotlin 中,通过 kotlinx.serialization
库可以轻松解析和序列化 JSON 数据。
1. 添加需要的库
添加序列化 Gradle 插件:org.jetbrains.kotlin.plugin.serialization
或 Gradle DSL 中的 kotlin("plugin.serialization")
plugins {
id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.22'
}
将 kotlinx.serialization
库添加到项目中:
dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0'
}
2. 在 Kotlin 中解析/反序列化 JSON
使用 kotlinx.serialization
解析/反序列化 JSON 字符串非常简单。
通过使用 @Serialized
注解来使类可序列化,并使用 decodeFromString()
函数将 JSON 字符串反序列化为该 Book 类的实例。
import kotlinx.serialization.*
import kotlinx.serialization.json.*
@Serializable
data class Book(val title: String, val author: String)
fun main() {
val json = """{"title":"Example Title", "author": "itmob.cn"}"""
val book = Json.decodeFromString<Book>(json)
println(book)
}
// 输出:Book(title=Example Title, author=itmob.cn)
3. 在 Kotlin 中序列化 JSON
在 Kotlin 中序列化 JSON 也同样简单。使用 encodeToString
函数将 Book 对象序列化为 JSON 字符串。
import kotlinx.serialization.*
import kotlinx.serialization.json.*
@Serializable
data class Book(val title: String, val author: String)
fun main() {
val book = Book("Example Title", "itmob.cn")
val json = Json.encodeToString(book)
println(json)
}
// 输出:{"title":"Example Title","author":"itmob.cn"}
有关 Kotlin 中序列化的更多信息,请参阅 Kotlin 序列化指南。