书上P444讲的更好
1. 概述 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于 Web API 交互。Kotlin 提供了多种解析 JSON 数据的方法,其中 org.json.JSONObject
和 Gson
是常见的选择。
2. 适用场景
解析网络请求返回的 JSON 数据
存储和读取本地 JSON 配置文件
序列化/反序列化 Kotlin 数据类
3. JSON 示例 假设有如下 JSON 数据 sample.json
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 { "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。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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 之间的转换。
添加依赖:
1 2 3 dependencies { implementation("com.google.code.gson:gson:2.8.9") }
定义数据类并解析 JSON:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 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 解析需求。