Skip to main content
CheckTown
转换工具

如何将 JSON 转换为 Kotlin 数据类

发布于 阅读约 5 分钟
本文目录

为什么要从 JSON 生成 Kotlin 数据类

Kotlin 数据类提供了一种简洁的方式来对 JSON 数据建模,内置 equals、hashCode、copy 和解构支持。对于 Android 开发者和后端 Kotlin 项目而言,为每个 API 响应手写数据类既费时又容易出错。我们的 JSON 转 Kotlin 转换器能在几秒钟内生成符合惯用法的数据类,具备恰当的空安全、序列化注解和命名约定。

Kotlin 的空安全体系是其最强大的特性之一,但它要求显式声明可空类型。在转换 JSON 时——由于任何字段都可能为 null——转换器会智能分析数据,判断哪些字段应当可空(以 ? 标记),哪些字段可以安全地设为非空,从一开始就生成更安全的代码。

转换器功能

转换器生成的 Kotlin 数据类可根据你的序列化库和项目需求进行定制。

  • 可空类型——JSON 样本中值为 null 的字段会生成可空类型(String?),有值的字段则生成非空类型(String),准确反映数据契约
  • @SerializedName——当 JSON 键使用 snake_case 或其他非 camelCase 格式时,生成 Gson 的 @SerializedName 注解,将其映射为符合惯用法的 Kotlin 属性名
  • 默认值——可选字段可在构造函数中包含默认值(空字符串、空列表、null),使数据类能够灵活应对部分字段缺失的 JSON 响应

免费试用 —— 无需注册

将 JSON 转换为 Kotlin →

Android 专属模式

从 JSON 生成的 Kotlin 数据类在 Android 开发流程中尤为有用。

  • Parcelize——生成的数据类可以用 @Parcelize 注解并实现 Parcelable,无需编写任何 parcel 代码即可在 Android 的 Activity 和 Fragment 之间传递
  • Room 集成——只需添加 @Entity 和 @PrimaryKey 注解,输出便可作为 Room 实体类使用,将 API 响应直接对接到本地数据库存储
  • Retrofit 兼容——生成的类可立即配合 Retrofit 和 Gson/Moshi 转换器使用,让你几分钟内就能定义 API 接口并开始发起网络请求

常见问题

转换器如何处理空安全?

转换器会检查 JSON 样本中的每个字段。值为 null 的字段会被声明为可空类型(例如 String?)。有实际值的字段则声明为非空类型(例如 String)。为获得最准确的空安全,请提供能覆盖数据全部取值范围的 JSON 样本——包括那些在生产环境中可能为 null 的字段。

数据类属性我应该用 val 还是 var?

转换器默认生成 val(只读)属性,遵循 Kotlin 对不可变性的偏好。使用 val 属性的数据类是线程安全的,也更易于推理。如果某些特定场景需要可变属性(例如带自动生成 ID 的 Room 实体),你可以在生成后将个别属性改为 var。

我可以为多态 JSON 生成密封类吗?

转换器会根据 JSON 结构生成标准的数据类。对于多态 JSON(某个字段决定对象类型的情况),你需要在生成后手动创建密封类层次结构。可以先用转换器把每个变体生成为独立的数据类,然后再用一个带判别字段的密封类将它们包裹起来。

相关工具