JSON 转 Kotlin
从 JSON 生成适用于 kotlinx.serialization、Gson、Moshi 或 Jackson 的 Kotlin data class
粘贴 JSON 或加载示例以生成 Kotlin 代码。
JSON 转 Kotlin 会生成什么
JSON 转 Kotlin 会将 API 响应或任意 JSON 示例转换为 Kotlin data class,可配合 kotlinx.serialization、Gson、Moshi、Jackson,或不使用任何库。当属性名与键不同时(例如 user_name → userName),所选库的注解(@SerialName、@SerializedName、@Json 或 @JsonProperty)会把它映射回 JSON。class、object、when、fun 等关键字会用反引号包裹;123abc 或 user-name 这类不是有效名称的键,会根据命名设置改名并添加映射,或用反引号保留原名。
使用方法
- 1.粘贴 JSON、上传或拖放 .json 文件,或加载一个示例。
- 2.设置根类型名称、属性命名方式和可空方式。
- 3.选择序列化库;如果希望每个类都有无参构造函数,请开启默认值。
- 4.在高级中设置包名,或将类嵌套在根类中。
- 5.阅读输出下方的提示,然后复制代码或下载 .kt 文件。
类型如何推断
- •会检查数组中的每个元素,而不只是第一个,同一数组中的对象会被合并。
- •部分对象中缺少的键为可选,会生成 T? = null;有时为 null 的键会生成 T?。两者分开处理,因此 {"id": 1, "name": "A"} 和 {"id": 2} 会得到 val name: String? = null。
- •能放入 32 位的整数为 Int,更大的为 Long,超过 64 位的为 BigInteger(kotlinx.serialization 下为 JsonPrimitive)。超过 ±2^53 的值会附带提示,因为 JavaScript 客户端可能会将其舍入。
- •同一位置出现 1 和 2.5 时会放宽为 Double;其他混合情况会给出提示。
- •类型映射:字符串 → String,小数 → Double,布尔值 → Boolean,数组 → List<T>,对象 → data class,空对象 → class,未知或混合 → Any?(kotlinx.serialization 下为 JsonElement?)。
限制与隐私
示例只反映数据某一次的样子,而不是完整的 API 契约。在依赖这些代码之前,请检查可选字段、通用类型和数字宽度。生成的代码需要各库的常规配置:serialization 编译器插件、Moshi 代码生成或 jackson-module-kotlin。Gson 会绕过 Kotlin 构造函数,因此除非每个属性都有默认值,非 null 属性仍可能收到 null。输入限制为 5 MB 和 256 层嵌套;从 2 MB 起,需点击“生成”按钮才会生成。所有处理都在您的浏览器中运行,JSON 不会被上传。
