DevToolPal
ID

JSON ke Struct Go

Buat struct Go dengan tag json dari contoh JSON, dengan struct bersarang bernama atau inline dan omitempty.

Berjalan lokal, tidak pernah diunggah

Opsi

Objek bersarang

JSON

0 karakter · 0 B

Go

0 karakter · 0 B

Fungsinya

Konverter JSON ke Go membaca contoh JSON dan menulis definisi struct Go dengan tag json, siap untuk encoding/json. Tempelkan respons dari API yang Anda panggil dan dapatkan tipe yang langsung bisa dipakai dengan json.Unmarshal, tanpa menulis setiap field dan tag secara manual.

Konverter memeriksa setiap nilai dalam contoh. Objek bersarang menjadi struct tersendiri, semua item array digabung menjadi satu tipe elemen, dan field yang tidak ada di sebagian item atau kadang null dikenali sebagai opsional. Hasilnya dirapikan seperti yang dilakukan gofmt.

Cara menggunakan

  1. Tempelkan JSON ke kolom input, unggah file .json, atau klik Contoh.
  2. Atur nama tipe akar dan pilih cara menulis objek bersarang, field mana yang mendapat omitempty, dan apakah field nullable memakai pointer.
  3. Salin kode Go atau unduh sebagai file .go, lalu tambahkan baris package Anda.

JSON yang tidak valid dilaporkan beserta baris dan kolom masalahnya.

Contoh

JSON ini:

{ "id": 7, "user_name": "ada", "tags": ["admin"], "profile": { "avatar_url": "https://example.com/a.png" } }

menjadi struct berikut:

type Root struct {
	ID       int      `json:"id"`
	UserName string   `json:"user_name"`
	Tags     []string `json:"tags"`
	Profile  Profile  `json:"profile"`
}

type Profile struct {
	AvatarURL string `json:"avatar_url"`
}

Tips

  • Satu contoh hanya menunjukkan isinya. Jika sebuah nilai bisa berupa angka atau string, sertakan keduanya, atau masukkan beberapa contoh ke dalam array agar digabung.
  • Timestamp datang sebagai string. Ubah tipenya sendiri menjadi time.Time bila formatnya RFC 3339.
  • Objek dengan field yang persis sama berbagi satu struct, sehingga hasil tetap ringkas saat bentuk yang sama muncul di beberapa tempat.
  • Menulis TypeScript juga? Generator JSON ke TypeScript memakai inferensi yang sama untuk membuat interface.

FAQ

› Bagaimana nama field dipilih?

Setiap kunci JSON diubah menjadi nama Go yang diekspor dalam PascalCase, dengan singkatan umum ditulis kapital seperti yang diharapkan golint, jadi user_id menjadi UserID dan avatar_url menjadi AvatarURL. Kunci aslinya tetap disimpan di tag json, sehingga encoding/json memetakan field dengan tepat.

› Tipe Go apa saja yang dipakai?

String menjadi string, bilangan bulat menjadi int (atau int64 jika ada nilai yang tidak muat dalam 32 bit), desimal menjadi float64, dan boolean menjadi bool. Array menjadi slice, objek kosong menjadi map[string]any, dan nilai yang hanya null atau mencampur beberapa jenis menjadi any.

› Apa beda struct bernama dan inline?

Mode bernama menulis setiap objek bersarang sebagai tipe tersendiri, seperti Address atau Order, sehingga lebih mudah dipakai ulang dan diuji. Mode inline menaruh tipe struct anonim langsung di dalam induknya dan menyimpan semuanya dalam satu deklarasi, seperti yang dilakukan banyak konverter cepat.

› Kapan omitempty ditambahkan?

Secara default hanya pada field opsional, yaitu field yang tidak ada di sebagian objek dalam array atau kadang bernilai null. Anda juga bisa menambahkannya ke semua field atau tidak sama sekali. Aktifkan pointer untuk membedakan nilai yang hilang atau null dari nilai nol.

› Apakah JSON saya diunggah?

Tidak. Struct dibuat di browser Anda dan tidak ada yang dikirim ke server.