JSON 转 Kotlin · 免费在线生成 data class
免费在线 JSON 转 Kotlin 工具,粘贴 JSON 一键生成 data class,字段用 val 声明、构造参数式写法,自动带上 equals/hashCode/toString/copy。适合 Android 与 Kotlin 后端接接口模型。Kotlin 的空安全是这里最需要手工确认的部分:推断出的类型默认非空,而接口实际可能返回 null。纯浏览器本地生成,不上传、免登录。
- 粘贴接口返回的 JSON(本页已自动预选 Kotlin)。
- 填写根类名,默认 Root。
- 复制生成的 data class 代码。
- 按接口协议把可能为 null 的字段加上 ?,并补序列化注解。
生成的字段是可空的吗?
默认不可空(String、Int 而不是 String?)。这是按样例 JSON 推断的结果,只要样例里有值就当作非空。实际接口若可能返回 null 或不返回该字段,反序列化会抛异常,所以务必按协议给这些字段补上 ?,并考虑给默认值。
JSON 键是 user_name,字段名 userName 能对上吗?
不能自动对上,生成结果不含序列化注解。用 Gson 需要加 @SerializedName("user_name"),用 Moshi 加 @Json(name = "user_name"),用 kotlinx.serialization 加 @SerialName("user_name") 并给类加 @Serializable。也可以在解析器层统一配置蛇形转驼峰策略,省去逐字段标注。
val 和 var 该选哪个?
生成的是 val(只读),适合接口响应这类一次性构造的不可变模型,配合 copy() 做局部修改。如果这个类要参与表单双向绑定或需要就地修改字段,把 val 改成 var 即可,data class 两者都支持。
kotlinx.serialization 还需要额外配置吗?
需要给每个 data class 加 @Serializable,并在构建脚本里启用 kotlin serialization 插件与运行时依赖。另外它对未知字段默认严格,接口新增字段会报错,可以配置 ignoreUnknownKeys = true 放宽。Gson 和 Moshi 默认忽略未知字段,无需此配置。
嵌套对象生成的类怎么组织?
嵌套对象生成同级的独立 data class,根类以字段类型引用。Kotlin 允许一个文件放多个顶级类,整段复制即可编译。也可以把子类挪进根类内部作为嵌套类,注意 Kotlin 的内部类默认是静态语义,不需要额外加关键字。