Rumah > pembangunan bahagian belakang > Golang > Mengapa struct Go saya tidak menyahkod JSON dengan betul?

Mengapa struct Go saya tidak menyahkod JSON dengan betul?

Patricia Arquette
Lepaskan: 2024-11-19 10:25:02
asal
177 orang telah melayarinya

Why is my Go struct not decoding JSON correctly?

Menyahkod JSON menjadi Go Struct

Dalam Go, menghuraikan fail JSON ke dalam struct memerlukan penggunaan pakej pengekodan/json. Walau bagaimanapun, penghuraian struktur JSON yang salah boleh membawa kepada hasil yang tidak dijangka.

Pertimbangkan coretan kod yang disediakan di bawah:

var settings struct {
    serverMode bool
    sourceDir  string
    targetDir  string
}

func main() {
    // ...
}
Salin selepas log masuk

Dengan fail konfigurasi JSON:

{
    "serverMode": true,
    "sourceDir": ".",
    "targetDir": "."
}
Salin selepas log masuk

Anda mungkin menghadapi output yang membingungkan:

false  
(false and two empty strings)
Salin selepas log masuk

Isu ini timbul kerana elemen struktur tidak dieksport. Secara lalai, elemen struktur yang bermula dengan huruf kecil tidak dapat dilihat oleh pengekod/penyahkod JSON. Untuk menyelesaikan masalah ini, eksport elemen struct dengan menggunakan huruf besar pada huruf pertamanya:

var settings struct {
    ServerMode bool `json:"serverMode"`
    SourceDir  string `json:"sourceDir"`
    TargetDir  string `json:"targetDir"`
}
Salin selepas log masuk

Mengeksport elemen struct memastikan pengekod/penyahkod JSON boleh mengakses dan menyahkod nilai struct. Ini akan menghasilkan penghuraian yang betul bagi fail konfigurasi JSON ke dalam struct.

Atas ialah kandungan terperinci Mengapa struct Go saya tidak menyahkod JSON dengan betul?. 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