Rumah > pembangunan bahagian belakang > Golang > Mengapa My Go Struct Menghasilkan Objek JSON Kosong Semasa Marshalling?

Mengapa My Go Struct Menghasilkan Objek JSON Kosong Semasa Marshalling?

Mary-Kate Olsen
Lepaskan: 2024-12-26 00:28:10
asal
1021 orang telah melayarinya

Why Does My Go Struct Produce an Empty JSON Object When Marshalling?

JSON Marshalling in Go: Case Sensitiviti of Struct Fields

Apabila cuba menjana JSON daripada struct dalam Go, seseorang mungkin menghadapi hasil yang tidak dijangka jika medan struct bermula dengan aksara kecil. Pertimbangkan struct berikut:

type Machine struct {
  m_ip string
  m_type string
  m_serial string
}
Salin selepas log masuk

Marshalling struct ini kepada JSON akan menghasilkan objek JSON kosong {}. Ini kerana, mengikut konvensyen, Go menggunakan kes pengecam untuk menentukan keterlihatannya dalam pakej. Dengan memulakan nama medan dengan aksara huruf kecil, ia ditandakan sebagai peribadi dan tidak boleh diakses oleh fungsi json.Marshal.

Untuk menyelesaikan isu ini, seseorang boleh sama ada menjadikan nama medan itu terbuka dengan menggunakan huruf besar pada huruf pertama setiap perkataan :

type Machine struct {
  MachIp string
  MachType string
  MachSerial string
}
Salin selepas log masuk

Atau, jika seseorang ingin menggunakan nama medan huruf kecil dalam output JSON, mereka boleh menggunakan tag untuk menentukan JSON yang dikehendaki names:

type Machine struct {
  MachIp     string `json:"m_ip"`
  MachType   string `json:"m_type"`
  MachSerial string `json:"m_serial"`
}
Salin selepas log masuk

Dengan menggunakan teg, seseorang boleh menyesuaikan nama medan JSON sambil mengekalkan privasi medan struct dalam Go.

Atas ialah kandungan terperinci Mengapa My Go Struct Menghasilkan Objek JSON Kosong Semasa Marshalling?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan