Konverter JSON ke Struktur Go
Membuat definisi struct Go dari JSON menggunakan port json-to-go, lalu memformatnya dengan gofmt. Kunci menjadi kolom CamelCase yang diekspor dengan tag json:"..."; objek bertingkat menjadi struct anonim inline dan null menjadi any.
Menulis struct untuk melakukan json.Unmarshal pada respons REST API pihak ketiga.
Kapan menggunakannya
- Menulis struct untuk melakukan json.Unmarshal pada respons REST API pihak ketiga.
- Membuat tipe awal permintaan dan respons untuk handler HTTP Go dari contoh payload.
Cara penggunaan
- Tempelkan objek atau array JSON ke editor kiri.
- Periksa struct yang dihasilkan; tipe akar selalu bernama AutoGenerated.
- Salin ke paket Anda, ganti nama tipenya, dan pindahkan struct inline ke tipe bernama jika akan digunakan kembali.
JSON
{
"id": 42,
"user_name": "ada",
"score": 9.5,
"active": true,
"deleted_at": null,
"tags": ["go", "json"],
"address": { "city": "Tokyo", "zip": "100-0001" }
}Struct Go
type AutoGenerated struct {
ID int `json:"id"`
UserName string `json:"user_name"`
Score float64 `json:"score"`
Active bool `json:"active"`
DeletedAt any `json:"deleted_at"`
Tags []string `json:"tags"`
Address struct {
City string `json:"city"`
Zip string `json:"zip"`
} `json:"address"`
}Detail dan batasan
Pembuatan kode berjalan di browser. Tidak ada pengaturan untuk nama tipe, struct inline atau bernama, maupun tag.
Singkatan ditulis dengan huruf besar (id menjadi ID) dan snake_case menjadi CamelCase, dengan kunci asli dipertahankan dalam tag json.
Bilangan bulat menjadi int (int64 jika besar), desimal menjadi float64. null, array kosong, dan array campuran menjadi any atau []any.
Jika objek dalam array berbeda, kunci yang tidak ada pada sebagian objek diberi ,omitempty.
FAQ
Bisakah saya mengonversi array JSON pada tingkat akar?
Ya. Hasilnya berupa type AutoGenerated []struct{...}, yang menggabungkan kolom dari semua objek dalam array.
Mengapa kolom null saya bertipe any?
Nilai null tidak membawa informasi tipe. Ganti any dengan pointer seperti *string atau *time.Time agar tetap mendukung nil.
Apakah alat ini membuat struct bertingkat yang bernama?
Tidak. Objek bertingkat menjadi struct anonim inline. Pindahkan secara manual ke tipe bernama jika perlu merujuknya.