İçeriğe geç

JSON'u TypeScript, Go, Python ve diğer türlere dönüştür

JSON örneklerinizi yapıştırın; TypeScript arayüzleri, Zod şemaları, Go struct'ları, Python, Java, C#, Kotlin, Swift ve Rust türleri tarayıcınızda oluşturulsun.

Birden fazla örnek (art arda ya da JSON Lines) ve dizilerin içindeki nesneler birleştirilir: bazı yerlerde eksik olan anahtarlar isteğe bağlı, null değerler ise null olabilir hale gelir.

TypeScript
Bir örnek yapıştırın ve Türleri oluştur'a basın.
Tanım biçimi
Tarayıcınızda çalışır · yükleme yokNasıl çalışır

JSON'dan tür oluşturma nasıl kullanılır

  1. 1

    JSON örneklerini yapıştırın

    Tek bir yanıtı, kayıt dizisini ya da art arda birkaç yanıtı yapıştırın; Örnek, birleştirilmiş iki kullanıcıyı gösterir.

  2. 2

    Dili seçin

    TypeScript, Zod, Go, Python, Java, C#, Kotlin, Swift veya Rust'ı ve bunun stil seçeneklerini belirleyin.

  3. 3

    Kök türü adlandırın

    En üst düzey türün adını girin, örneğin User veya OrderResponse.

  4. 4

    Oluşturun ve kopyalayın

    Türleri oluştur düğmesine basın, ardından kodu kopyalayın veya indirin; değişiklik yaptığınızda kod otomatik yeniden oluşturulur.

Sınırlar ve Pro

Kaydolmadan ücretsiz: 3 Python stiliyle 9 çıktı dili, istediğiniz sayıda birleştirilmiş örnek ve 20 MB'a kadar dosya; oluşturma 30 saniye sonra durdurulur.

Pro reklamları kaldırır; oluşturucu her planda aynıdır. Pro'yu gör

JSON'dan tür oluşturma hakkında

Bir API yanıtı için türleri elle yazmak yavaştır ve hataya açıktır; özellikle veri üç düzey iç içe olduğunda. Bir veya birkaç JSON örneğini yapıştırın, bu oluşturucu yapıyı çıkarsasın ve doğrudan yapıştırabileceğiniz tanımları dokuz farklı biçimde yazsın: TypeScript arayüzleri veya tür takma adları, çalışma zamanı doğrulaması için Zod şemalarıyla TypeScript, json etiketli Go struct'ları, Python dataclass'ları, TypedDict'leri veya Pydantic v2 modelleri, Jackson ek açıklamalı Java record'ları, System.Text.Json için C# sınıfları, kotlinx.serialization için Kotlin data class'ları, Swift Codable struct'ları ve serde için Rust struct'ları.

Tek bir örnek nadiren her alanı gösterir; bu yüzden oluşturucu verdiğiniz tüm örnekleri birleştirir. Birkaç belgeyi art arda, JSON Lines olarak ya da nesne dizisi şeklinde yapıştırabilirsiniz: bazı nesnelerde bulunmayan bir anahtar isteğe bağlı olur, bazen null olan anahtar null olabilir hâle gelir, bazen ondalıklı gelen bir tam sayı ondalıklı sayı türüne dönüşür, gerçekten karışık değerler ise birleşim türü ya da dilin dinamik JSON türü olur. İç içe nesneler kendi adlı türlerini alır; orders Order, addresses Address olur. Aynı yapıdaki nesneler bir kez oluşturulup yeniden kullanılır. Anahtarları sayı, UUID veya tarih olan nesneler eşlemeye (map) dönüştürülür.

Alan adları her dilin kurallarına çevrilir; first-name veya class gibi farklı kalan JSON anahtarları uygun ek açıklama, takma ad ya da CodingKeys ile geri eşlenir. Örnekteki yorumlar ve sondaki virgüller sorun çıkarmaz.

Çıktı yalnızca verdiğiniz örnekleri tanımlar; oluşturucu örneklerinizde bulunmayan alanları veya değerleri bilemez, bu yüzden kullanmadan önce API belgelerinizle karşılaştırın.

Gizlilik

Örnekler bu sekmedeki bir Web Worker tarafından ayrıştırılır ve kod orada oluşturulur; bu nedenle kişisel veya kurum içi veri içeren API yanıtları hiçbir zaman yüklenmez. Dil ve adlandırma seçenekleri yerel depolamada saklanır; yapıştırdığınız JSON saklanmaz.

Özellikler

Birçok örneği birleştirir

Yapıştırdığınız tüm örneklerde eksik anahtarlar isteğe bağlı, null değerler null olabilir hâle gelir.

9 dil

TypeScript, Zod, Go, Python, Java, C#, Kotlin, Swift ve Rust, her dilin kendi adlandırma kurallarıyla.

Anahtar eşleme dahil

json etiketleri, takma adlar, @SerialName, @JsonProperty ve CodingKeys özgün JSON adlarını korur.

JSON'dan tür oluşturma: sık sorulan sorular

Hangi alanların isteğe bağlı olduğuna nasıl karar verilir?
O konumdaki nesnelerden en az biri anahtarı içermiyorsa alan isteğe bağlı olur. Tek bir nesne yapıştırırsanız her alan zorunlu olur, çünkü aksini gösteren bir şey yoktur. Hangi anahtarların bazen geldiğini görmesi için gerçek yanıtlardan birkaçını ya da bir kayıt dizisini yapıştırın. Tüm alanları isteğe bağlı yap seçeneği kısmi veya yama verileri içindir.
Bir değer bazen null ise ne olur?
Alan null olabilir hâle gelir: TypeScript'te string | null, Go'da işaretçi, Python'da str | None, Kotlin ve Swift'te String?, Rust'ta Option<String>, Java ve C#'ta ise kutulanmış ya da null olabilen tür. Tüm örneklerde null olan bir alanın çıkarsanacak türü yoktur; bu yüzden dilin bilinmeyen veya dinamik JSON türü kullanılır.
Tam sayılarım neden ondalıklı sayı oldu?
Aynı alan için bir örnekte 7, diğerinde 7.5 varsa tür ikisini de taşımalıdır; bu yüzden float veya double olur. 10.0 gibi ondalık noktayla yazılan sayılar da ondalıklı sayılır. TypeScript'te ikisi de number'dır; Zod'da yalnızca tam sayı içeren alan z.number().int() ile denetlenir.
Bu araç quicktype ile aynı mı?
Aynı sorunu kendi oluşturucusuyla çözer; tamamen tarayıcınızda çalışır ve birkaç şey ekler: TypedDict dahil üç Python stili, Zod şemaları ve yapıştırılan birçok belgenin birleştirilmesi. quicktype daha fazla dili destekler ve JSON Schema okuyabilir. Buradaki dokuz dil için çıktı, ek çalışma zamanı yardımcıları olmadan derlenecek şekilde tasarlanmıştır.
Tarihleri, enum'ları veya UUID'leri algılayabilir mi?
Hayır. Metinler metin olarak kalır; çünkü birkaç örnek, gelecekteki her değerin tarih ya da sabit bir kümeden biri olacağını kanıtlayamaz. API'niz garanti ediyorsa oluşturulan türü elle Date, time.Time, datetime, enum veya UUID türüne değiştirin. Tek istisna, anahtarları UUID, sayı veya tarih olan nesnelerdir: bunlar eşlemeye dönüşür.