Langsung ke konten

Ubah JSON ke TypeScript, Go, Python, dan lainnya

Tempel contoh JSON dan dapatkan interface TypeScript, skema Zod, struct Go, serta tipe Python, Java, C#, Kotlin, Swift, dan Rust, dibuat langsung di browser Anda.

Beberapa sampel (berurutan atau JSON Lines) dan objek di dalam array digabungkan: key yang tidak ada di salah satu sampel menjadi opsional, nilai null menjadi nullable.

TypeScript
Tempel sampel, lalu tekan Buat tipe.
Deklarasikan sebagai
Berjalan di browser Anda · tanpa unggahCara kerja

Cara menggunakan JSON ke tipe data

  1. 1

    Tempel sampel JSON

    Tempel satu respons, array berisi data, atau beberapa respons berurutan; Contoh menampilkan dua pengguna yang digabung.

  2. 2

    Pilih bahasa

    Pilih TypeScript, Zod, Go, Python, Java, C#, Kotlin, Swift, atau Rust, lalu opsi gayanya.

  3. 3

    Beri nama tipe utama

    Tentukan nama tipe tingkat atas, misalnya User atau OrderResponse.

  4. 4

    Buat dan salin

    Tekan Buat tipe, lalu salin kodenya atau unduh; kode dibuat ulang otomatis saat Anda mengubah pengaturan.

Batas dan Pro

Gratis tanpa daftar: 9 bahasa keluaran dengan 3 gaya Python, sampel gabungan tanpa batas jumlah, dan file hingga 20 MB, dengan proses dihentikan setelah 30 detik.

Pro menghilangkan iklan; generatornya sama di semua paket. Lihat Pro

Tentang JSON ke tipe data

Menulis tipe secara manual untuk respons API itu lambat dan rawan salah, apalagi jika datanya bersarang sampai tiga tingkat. Tempel satu atau beberapa sampel JSON, lalu generator ini membaca strukturnya dan menulis definisi siap pakai dalam sembilan varian: interface atau type alias TypeScript, TypeScript dengan skema Zod untuk validasi saat runtime, struct Go dengan tag json, dataclass, TypedDict, atau model Pydantic v2 untuk Python, record Java dengan anotasi Jackson, class C# untuk System.Text.Json, data class Kotlin untuk kotlinx.serialization, struct Codable Swift, dan struct Rust untuk serde.

Satu sampel jarang memperlihatkan semua field, jadi generator menggabungkan sebanyak apa pun sampel yang Anda berikan. Tempel beberapa dokumen berurutan, format JSON Lines, atau array berisi objek: key yang tidak ada di sebagian objek menjadi opsional, key yang kadang bernilai null menjadi nullable, bilangan bulat yang kadang berupa desimal menjadi float, dan nilai yang benar-benar campuran menjadi union atau tipe JSON dinamis bawaan bahasa tersebut. Objek bersarang mendapat tipe bernama sendiri — orders menjadi Order, addresses menjadi Address — dan bentuk yang identik hanya dibuat sekali lalu dipakai ulang. Objek dengan key berupa angka, UUID, atau tanggal diubah menjadi map.

Nama field disesuaikan dengan konvensi tiap bahasa, dan key JSON yang berbeda, seperti first-name atau class, dipetakan kembali dengan anotasi, alias, atau CodingKeys yang sesuai. Komentar dan koma di akhir pada sampel tetap diterima.

Hasilnya menggambarkan sampel yang Anda berikan; generator tidak dapat mengetahui field atau nilai yang tidak ada di sampel, jadi periksa dulu dengan dokumentasi API Anda sebelum dipakai.

Privasi

Sampel diurai dan kode dibuat oleh Web Worker di tab ini, sehingga respons API yang berisi data pribadi atau internal tidak pernah diunggah. Pilihan bahasa dan penamaan disimpan di penyimpanan lokal; JSON yang Anda tempel tidak disimpan.

Fitur

Gabungkan banyak sampel

Key yang hilang menjadi opsional dan nilai null menjadi nullable di semua sampel yang Anda tempel.

9 bahasa

TypeScript, Zod, Go, Python, Java, C#, Kotlin, Swift, dan Rust dengan penamaan yang sesuai konvensi.

Pemetaan key sudah termasuk

Tag json, alias, @SerialName, @JsonProperty, dan CodingKeys menjaga nama JSON asli.

JSON ke tipe data: pertanyaan yang sering diajukan

Bagaimana cara menentukan field yang opsional?
Field menjadi opsional jika setidaknya satu objek pada posisi itu tidak memuat key tersebut. Jika Anda menempel satu objek saja, semua field wajib, karena tidak ada petunjuk lain. Tempel beberapa respons asli atau array data agar generator melihat key mana yang muncul dan hilang. Jadikan semua field opsional tersedia untuk payload parsial atau patch.
Apa yang terjadi jika nilai kadang null?
Field menjadi nullable: string | null di TypeScript, pointer di Go, str | None di Python, String? di Kotlin dan Swift, Option<String> di Rust, serta tipe boxed atau nullable di Java dan C#. Field yang null di semua sampel tidak punya tipe yang bisa disimpulkan, jadi menjadi tipe unknown atau JSON dinamis bawaan bahasa itu.
Mengapa bilangan bulat saya menjadi float?
Jika satu sampel berisi 7 dan sampel lain berisi 7.5 untuk field yang sama, tipenya harus menampung keduanya, sehingga menjadi float atau double. Angka yang ditulis dengan titik desimal, seperti 10.0, juga dianggap desimal. Di TypeScript keduanya number; di Zod, field khusus bilangan bulat diperiksa dengan z.number().int().
Apakah ini sama dengan quicktype?
Alat ini memecahkan masalah yang sama dengan generatornya sendiri, yang berjalan sepenuhnya di browser Anda dan menambahkan beberapa hal: tiga gaya Python termasuk TypedDict, skema Zod, dan penggabungan beberapa dokumen yang ditempel. quicktype mendukung lebih banyak bahasa dan dapat membaca JSON Schema. Untuk sembilan bahasa di sini, hasilnya dirancang agar dapat dikompilasi tanpa helper runtime tambahan.
Apakah bisa mendeteksi tanggal, enum, atau UUID?
Tidak. String tetap string, karena beberapa sampel tidak dapat membuktikan bahwa semua nilai di masa depan adalah tanggal atau bagian dari himpunan tetap. Ubah sendiri tipe hasilnya menjadi Date, time.Time, datetime, enum, atau tipe UUID jika API Anda menjamin hal itu. Pengecualiannya objek dengan key UUID, angka, atau tanggal: objek tersebut menjadi map.