Tool Kumar 工具

JSON 转 Kotlin 数据类

把示例 JSON 转换成适用于 kotlinx.serialization 的数据类。嵌套对象各自生成独立的类,数组变成 List,重命名的字段通过 @SerialName 保留传输时的原始键名。

如何使用这个工具

  1. 粘贴一份有代表性的响应,其中应包含字段存在差异的记录。
  2. 检查生成的输出,必要时修改根名称。
  3. 复制或下载代码,然后对照你的 API 契约检查类型。

示例演示

以下输出来自内置转换器。两个数组元素的 price 值用于推断浮点型字段;note 值分别为 null 和字符串,因此推断为可空字段。

输入

{
  "user-id": 42,
  "profile": {
    "city": "London",
    "created_at": "2026-10-14T09:00:00Z"
  },
  "items": [
    {
      "price": 12,
      "note": null
    },
    {
      "price": 12.5,
      "note": "gift"
    }
  ]
}

输出

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class Root(
    @SerialName("user-id") val userId: Long,
    val profile: Profile,
    val items: List<Item>,
)

@Serializable
data class Profile(
    val city: String,
    @SerialName("created_at") val createdAt: String,
)

@Serializable
data class Item(
    val price: Double,
    val note: String? = null,
)

解码 Android API 响应

在应用中启用 Kotlin 序列化编译器插件,并添加 kotlinx.serialization 的 JSON 依赖。用生成的 Root 类型调用 Json.decodeFromString。

ignoreUnknownKeys 让服务端新增的字段不会导致解析失败。只有在你的 API 策略允许未知字段时,才设置这个选项。

import kotlinx.serialization.json.Json

val json = Json { ignoreUnknownKeys = true }
val model = json.decodeFromString<Root>(responseBody)

选项与特殊情况

  • 生成器会为每个数据类加上 @Serializable,并导入 kotlinx.serialization 注解。它不会生成 Moshi 的 @Json 或 Gson 的 @SerializedName。
  • 整数使用 Long,小数使用 Double,只出现过 null 或类型混合的值使用 JsonElement。可空字段默认值为 null。
  • 超出有符号 64 位范围的整数会变成 Double,可能丢失精度。需要精确的标识符时,请使用字符串或自定义序列化器。
  • 日期字符串保持为 String。仅凭一份示例,无法判断某个字段是否在每个 API 响应中都必然存在。

默认保护隐私

你的文档只保留在这个浏览器中。Tool Kumar 在你的设备上解析、转换并生成下载文件,无需账号,也没有上传步骤。

JSON 转 Kotlin 数据类:常见问题

使用哪个 Kotlin 序列化库?
kotlinx.serialization。输出使用 @Serializable,当 Kotlin 属性名与 JSON 键名不同时会加上 @SerialName。
可以配合 Moshi 使用吗?
字段类型可以作为编写模型的起点,但注解适用于 kotlinx.serialization。如果你的 Android 应用使用 Moshi,请替换这些注解并配置 Moshi 代码生成。
缺失字段和 null 字段如何处理?
在部分数组记录中缺失或出现过 null 的字段会变成可空类型,默认值为 null。必填的非空字段没有默认值。
能为 Android 生成 Kotlin DTO 吗?
能。它生成的数据类适合用作 DTO。请在项目中配置 Kotlin 序列化编译器插件和 JSON 运行时库。

相关工具

JSON 转 Java 实体类、JSON 转 Dart和JSON Schema 生成器。