Kotlin'i sola yapıştır ve "Dönüştür"'e tıkla — biz JSON'a çeviririzKotlin kodu yapıştır

Bu araç ne işe yarar

Bir unit test, bir fixture ya da API çağrısı için Kotlin'in data class'ını yansıtan bir JSON payload'ını elle yazmak zorunda kaldıysan, işin ne kadar angarya olduğunu bilirsin. Normalde kotlinx.serialization'ı devreye alır, class'ı annotate edip çıktıyı almak için uygulamayı çalıştırırsın. Kotlin'i buraya yapıştır ve hiçbiri olmadan geçerli JSON al — Gradle plugin'i yok, @Serializable yok, runtime yok.

Dönüştürücü, Kotlin değerlerinin gerçek serileştirme davranışına saygı duyar. val price: Double = 49.99 bir JSON sayısına, val tags: List<String> bir JSON dizisine, null'lu val address: Address? ise JSON null'ına dönüşür. kotlin.stdlib'deki Instant, LocalDate ve LocalDateTime ISO-8601 string'i olarak çıkar. UUID standart hex string'e dönüşür. Map<String, V> JSON nesnesine, enum class değerleri de string adlarıyla çıkar — Gson veya jackson-module-kotlin'dan alacağın davranışın aynısı.

Serileştirme annotation'larına uyulur. @SerialName("x") JSON anahtarını yeniden adlandırır, @Transient property'yi düşürür. Property açıkça atanmadığında default parametre değerleri çıktıya yazılır. Birden fazla data class'ı bir defada yapıştır; her biri üst düzey giriş olarak çıkar, iç içe tipler açılır, sealed class hiyerarşileri varyantlarına indirgenir. Bir Android uygulaması yayınlıyorsan, çıktı doğrudan Retrofit fixture'larına ve Room test seed'lerine düşer.

Nasıl kullanılır

Üç adım. Tek bir instance yapıştırsan da data class dolu bir dosyayı yapıştırsan da aynı şekilde çalışır.

1

Kotlin'ini yapıştır (ya da örneği yükle)

Kotlin'ini olduğu gibi sol editöre bırak. Bir data class, normal class, object bildirimi, birden fazla class ya da sealed hiyerarşiler — hepsi olur. Önce gerçekçi bir örnek görmek için Örneği Yükle'ye tıkla.

import'ları, package'ları veya annotation'ları temizlemene gerek yok. Kotlin söz dizimi'ni olduğu gibi bırak — companion object'ler ve backing field'lar da sorun değil.

2

Dönüştür'e bas

Yeşil Dönüştür düğmesine tıkla. Araç Kotlin'i okur, her data class'ı ve property'yi korur ve JSON'u tek geçişte üretir. Çalışırken kısa bir yükleniyor göstergesi döner.

3

JSON'u kopyala

Sağdaki panel girintilenmiş JSON ile dolar. Retrofit testine, Room fixture'ına, OpenAPI örneklerine veya REST istemcisine yapıştır. Döngü bu kadar.

Ne zaman gerçekten işe yarar

Android uygulamalarında API fixture'ları

Bir Retrofit request model'in var ve MockWebServer veya Postman'e bırakmak için JSON payload'a ihtiyacın var. Data class'ı yapıştır, JSON'u al, devam.

Backend test verileri

30 data class'lı bir Ktor veya Spring servisi. Her birini tek bir <code>@Serializable</code> annotation'ı bile yazmadan integration test'ler için JSON seed dosyalarına dönüştür.

Güncel kalan dokümantasyon

OpenAPI spec'in veya API referansın için gerçek data class'lardan doğrudan JSON örnekleri üret; böylece dokümantasyon model'den hiç ayrılmaz.

Config dosyası başlangıç şablonları

Yirmi küsur property'li bir Settings data class'ı, düzenlemeye hazır bir JSON template'e dönüşür — elle yazılmış boilerplate yok.

Sık sorulanlar

kotlinx.serialization veya Jackson kurulu olmalı mı?

Hayır. Bu araç sunucu tarafında çalışır ve kodunu derlemez — herhangi bir plugin olmadan JSON alırsın. Uygulamanın içinde runtime serileştirme istiyorsan, native seçim kotlinx.serialization'dır; jackson-module-kotlin da işini görür.

@SerialName, @Transient ve @JsonProperty'ye uyuyor mu?

Evet. @SerialName("x") ve @JsonProperty("x") JSON anahtarını yeniden adlandırır, @Transient / @JsonIgnore ise property'yi çıktıdan çıkarır — kotlinx.serialization semantiğiyle aynı.

Instant, LocalDate ve UUID için durum ne?

Instant, LocalDate, LocalDateTime ve ZonedDateTime'ın hepsi ISO-8601 string'i olarak çıkar. UUID standart 8-4-4-4-12 hex string'ine dönüşür. Duration duration string'i olur.

Nullable'lar, sealed class'lar ve enum'lar nasıl ele alınıyor?

Değeri null olan nullable property'ler JSON null'ına dönüşür; aksi halde iç tip normal şekilde serileştirilir. Sealed class instance'ları varsayılan olarak type discriminator içerir (kotlinx.serialization kullanıyorsan yapılandırılabilir). Enum'lar aksi belirtilmediği sürece string adlarıyla çıkar.

Kodum saklanıyor mu?

Kodun dönüştürme için backend'e gönderilir ve kalıcı olarak saklanmaz — payload'ı loglamıyoruz. Her zaman olduğu gibi, hassas kodu yapıştırmadan önce bir göz at.

Kotlin/JVM ve Kotlin Multiplatform kodunun ikisinde de çalışıyor mu?

Evet. Söz dizimi geçerli Kotlin olduğu sürece dönüştürücü, hedefin JVM, JS, Native veya Multiplatform olmasını umursamaz. JSON karşılığı olmayan platform'a özel tipler (Job veya Flow gibi) null olarak çıkar.

İhtiyaç duyabileceğin diğer araçlar

Kotlin'den JSON'a yapboz'un bir parçası. Bunlar onunla iyi gider: