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.設定根型別名稱、屬性命名方式與可為 null 的方式。
- 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 不會上傳。
