Rumah >pembangunan bahagian belakang >Golang >Mengapa My Go Struct Menghasilkan Objek JSON Kosong Semasa 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 }
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 }
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"` }
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!