Lewati ke konten

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

  1. Tempelkan objek atau array JSON ke editor kiri.
  2. Periksa struct yang dihasilkan; tipe akar selalu bernama AutoGenerated.
  3. 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.

Spesifikasi dan referensi