1. 概述
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于 Web API 交互。Kotlin 提供了多种解析 JSON 数据的方法,其中 org.json.JSONObject 和 Gson 是常见的选择。
2. 适用场景
- 解析网络请求返回的 JSON 数据
- 存储和读取本地 JSON 配置文件
- 序列化/反序列化 Kotlin 数据类
3. JSON 示例
假设有如下 JSON 数据 sample.json:
{
"apps": [
{
"id": 1,
"name": "MyApp",
"version": "1.0.0"
},
{
"id": 2,
"name": "AnotherApp",
"version": "2.3.4"
}
]
}
4. 解析方式
4.1 使用 org.json 解析 JSON
Kotlin 可以使用 org.json.JSONObject 和 org.json.JSONArray 解析 JSON。
import org.json.JSONObject
fun parseJson(jsonData: String) {
val jsonObject = JSONObject(jsonData)
val appsArray = jsonObject.getJSONArray("apps")
for (i in 0 until appsArray.length()) {
val appObject = appsArray.getJSONObject(i)
val id = appObject.getInt("id")
val name = appObject.getString("name")
val version = appObject.getString("version")
println("App ID: $id, Name: $name, Version: $version")
}
}
4.2 使用 Gson 解析 JSON
Gson 是 Google 提供的 JSON 库,可用于对象与 JSON 之间的转换。
添加依赖:
dependencies {
implementation("com.google.code.gson:gson:2.8.9")
}
定义数据类并解析 JSON:
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
// 定义数据类
data class App(
val id: Int,
val name: String,
val version: String
)
data class AppList(
@SerializedName("apps") val apps: List<App>
)
fun parseJsonWithGson(jsonData: String) {
val gson = Gson()
val appList = gson.fromJson(jsonData, AppList::class.java)
appList.apps.forEach {
println("App ID: ${it.id}, Name: ${it.name}, Version: ${it.version}")
}
}
5. 解析流程
- 选择解析方式(
org.json或Gson)。 - 解析 JSON 数据(对象映射或手动解析)。
- 处理数据(存储、展示或操作)。
6. 适用场景对比
| 解析方式 | 适用场景 | 备注 |
|---|---|---|
org.json | 简单解析 JSON | 适合临时处理,性能较低 |
Gson | 解析 API 响应或本地 JSON 文件 | 易用,支持复杂对象映射 |
7. 结论
对于 Kotlin 开发者,推荐使用 **Gson**,它提供了更灵活的数据映射能力,适用于大多数 JSON 解析需求。