JSON 转 Kotlin Data Class
生成 data class:val 字段、camelCase 命名、@JsonProperty 映射一应俱全。
Android 与后端 JVM 项目里,Kotlin data class 是 JSON 模型的事实标准:一行声明得到 equals/hashCode/copy 全套。本工具把 JSON 按结构展开成多个 data class——嵌套对象独立建模,字段全部 val(不可变),键名转 camelCase,与原始键名不一致时自动补 @JsonProperty。
生成的类默认带 @JsonIgnoreProperties(ignoreUnknown = true):接口悄悄加字段时客户端不至于反序列化崩溃——这是生产环境最值得默认开启的一条注解。
为什么默认不可变(val)
Kotlin 惯例是模型字段用 val:解析出的响应不该被改写,可变性交给 copy()。val 也让 data class 在多线程环境下天然安全。需要手动构造的场景用具名参数,可读性比 setter 链好。
序列化库的选择
生成代码用的是 Jackson 注解(Android 常用 Moshi 的话,把 @JsonProperty 换成 @Json(name=...) 即可,映射关系一致)。数据类本身不绑定任何库,换库只动注解。
常见问题
- 空字段与可空类型怎么处理?
- 工具按「字段一定存在」生成非空类型;接口可能缺字段时手工加 ? 并给默认值。JSON null 会映射为 Any? 可空类型。
- JSON 根是数组怎么办?
- 生成 typealias RootModelList = List<RootModel>,元素模型取自数组首元素。
- 和 Android Studio 插件生成有何不同?
- 逻辑一致,本工具的优势在零安装、可离线、跨设备,以及与本站 JSON 工具链(格式化、校验)的接力使用。