You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中使用Kotlin序列化从服务器响应提取所需信息

如何通过序列化从服务器响应中提取所需信息?

在Kotlin中,我们可以借助Kotlin Serialization库,通过定义匹配JSON结构的精简数据类,精准提取服务器响应里的目标信息,具体操作如下:

1. 服务器响应示例(JSON片段)

假设服务器返回的响应包含以下结构:

"location": {
    "name": "London",
    "region": "City of London, Greater London",
    "country": "United Kingdom",
    "lat": 51.52,
    "lon": -0.11,
    "tz_id": "Europe/London",
    "localtime_epoch": 1683804215,
    "localtime": "2023-05-11 12:23"
}

2. 定义序列化数据类

只在数据类中声明你需要的字段,用注解完成JSON键与数据类属性的映射:

@Serializable
data class WeatherModel(
    @SerialName("location")
    val location: Location
)

@Serializable
data class Location(
    @SerialName("name")
    val townName: String
)

3. 核心注解说明

  • @Serializable:标记该数据类支持序列化/反序列化,是Kotlin Serialization的核心标识
  • @SerialName:当JSON键名与数据类属性名不一致时,用它指定映射关系(比如示例中JSON的name对应属性townName)
  • 冗余字段自动忽略:JSON中未在数据类声明的字段(如region、country等)会被序列化库自动跳过,无需额外处理

4. 解析并提取目标信息

使用Json.decodeFromString方法完成JSON到数据类的转换,直接获取所需字段:

// 完整的服务器响应JSON字符串
val fullResponse = """
{
    "location": {
        "name": "London",
        "region": "City of London, Greater London",
        "country": "United Kingdom",
        "lat": 51.52,
        "lon": -0.11,
        "tz_id": "Europe/London",
        "localtime_epoch": 1683804215,
        "localtime": "2023-05-11 12:23"
    }
}
"""

// 反序列化JSON到数据类
val weatherData = Json.decodeFromString<WeatherModel>(fullResponse)
// 提取目标信息
val targetTownName = weatherData.location.townName // 结果为"London"

这种方式只需聚焦你需要的信息,无需处理整个JSON结构,代码简洁且高效。

内容的提问来源于stack exchange,提问作者Ramil Mavlikhanov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:54:59