Rumah >pembangunan bahagian belakang >Golang >Mengapa `json.Marshal` Go tidak berfungsi dengan Struktur yang Mengandungi Nama Medan Huruf Kecil?

Mengapa `json.Marshal` Go tidak berfungsi dengan Struktur yang Mengandungi Nama Medan Huruf Kecil?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-21 07:36:11939semak imbas

Why Doesn't Go's `json.Marshal` Work with Structs Containing Lowercase Field Names?

Mengapa Go Gagal Menghasilkan JSON untuk Structs dengan Nama Medan Huruf Kecil?

Untuk bermula, Go menggunakan konvensyen sarung untuk membezakan antara pengecam peribadi dan awam dalam pakej. Dalam contoh yang disediakan, medan (m_ip, m_type, dan m_serial) struct Mesin adalah peribadi. Oleh itu, ia tidak boleh diakses oleh perpustakaan luaran seperti json.Marshal di luar pakej yang mana ia ditakrifkan.

Setelah menukar nama medan kepada huruf besar (MachIp, MachType dan MachSerial) dalam coretan kod kedua, mereka menjadi umum dan boleh dieksport. Ini membolehkan json.Marshal berjaya menjana perwakilan JSON.

Walau bagaimanapun, jika anda lebih suka menggunakan nama medan huruf kecil, anda boleh menentukan nama medan JSON yang dikehendaki secara manual dengan menggunakan teg medan. Contohnya:

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

Dengan menganotasi medan dengan tag json, anda pada asasnya mengarahkan pengekod JSON untuk menggunakan nama medan yang ditentukan semasa menjana output JSON.

Atas ialah kandungan terperinci Mengapa `json.Marshal` Go tidak berfungsi dengan Struktur yang Mengandungi Nama Medan Huruf Kecil?. 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