JSON ke Struct Go
Ubah JSON menjadi struct Go dengan nama field yang diekspor, tag json, tipe pointer untuk null, dan omitempty opsional. Mendukung objek dan array bersarang.
Objek bersarang menjadi struct terpisah; nilai nullable memakai pointer; bilangan bulat menjadi int64, desimal float64, dan nilai campuran atau hanya null menjadi any.
Berjalan sepenuhnya di browser Anda. Data Anda tidak pernah diunggah.
Alat Terkait
Lihat SemuaApa itu JSON ke Struct Go?
Hasilkan definisi struct Go yang idiomatis dari contoh JSON. Nama field berupa PascalCase terekspor dengan inisialisme Go (ID, URL, API…), setiap field membawa tag json:"…" berisi key asli, dan objek bersarang menjadi struct bernama terpisah.
Cara menggunakan JSON ke Struct Go
- Tempel contoh JSON ke Input JSON (atau klik Muat contoh / Buka file).
- Atur Nama tipe root (bawaan
Root). - Pertahankan atau hapus centang Tambahkan omitempty ke field opsional dan nullable.
- Salin kode Go yang dihasilkan atau Unduh sebagai file.
Contoh
{"id":1,"name":"A","tags":["x"]} type Root struct {
ID int64 `json:"id"`
Name string `json:"name"`
Tags []string `json:"tags"`
} Kapan menggunakan JSON ke Struct Go
Gunakan untuk unmarshal respons API dengan encoding/json. Alat ini tidak membuat tipe khusus untuk nilai waktu atau enum; ubah sendiri string menjadi time.Time bila perlu.
Cara kerja JSON ke Struct Go
Contoh JSON ditelusuri secara rekursif dan setiap posisi mengumpulkan tipe yang pernah dilihatnya. Array berisi objek digabung menjadi satu tipe: key yang tidak ada di sebagian elemen menjadi opsional, key yang bernilai null di suatu tempat menjadi nullable, bilangan bulat yang bercampur dengan desimal menjadi tipe floating-point, dan campuran tipe lain beralih ke tipe dinamis. Objek bersarang menjadi tipe bernama sendiri (PascalCase dari key, key array disingularkan: orders → Order), dengan akhiran angka jika nama bentrok. Keluaran Go memakai int64 untuk bilangan bulat, float64 untuk desimal, string, bool, slice untuk array, pointer (*T) untuk nilai nullable, dan any untuk nilai dinamis atau yang hanya null. Kolom diratakan seperti keluaran gofmt.
Kasus Penggunaan Umum
- Memodelkan respons REST untuk json.Unmarshal
- Membuat struct konfigurasi dari file JSON
- Mempercepat penulisan DTO untuk microservice Go
- Membandingkan penamaan field antara JSON dan kode Go
Pertanyaan Umum
Mengapa int64, bukan int?
int64 punya ukuran terjamin di setiap platform, sehingga menghindari kejutan overflow pada ID besar. Ganti ke int jika Anda mau.
Kapan pointer dipakai?
Ketika contoh berisi null untuk sebuah key, field menjadi *T sehingga nilai yang hilang bisa dibedakan dari nilai nol.
Apa fungsi omitempty?
encoding/json melewati field saat marshalling jika bernilai nol. Opsi ini menambahkannya hanya pada field yang opsional atau nullable dalam contoh.