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
Mary-Kate Olsenasal
2024-12-26 00:28:10987semak imbas

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
}

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!

Kenyataan:
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