Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menyahmarshal JSON dengan Ruang dalam Nama Utama Menggunakan `pengekodan/json` Go?

Bagaimanakah Saya Boleh Menyahmarshal JSON dengan Ruang dalam Nama Utama Menggunakan `pengekodan/json` Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-25 07:57:10519semak imbas

How Can I Unmarshal JSON with Spaces in Key Names Using Go's `encoding/json`?

JSON Key Names with Spaces: Unmarshalling Made Possible

Deserialisasi data JSON dengan kunci kompleks yang mengandungi ruang selalunya boleh menimbulkan cabaran semasa unmarshalling. Mari kita siasat contoh khusus menggunakan pengekodan/pustaka json dalam Go.

Masalah:

Pertimbangkan skema JSON berikut:

[
  {"Na me": "Platypus", "Order": "Monotremata"},
  {"Na me": "Quoll", "Order": "Dasyuromorphia"}
]

Menggunakan pengekodan standard/pustaka json untuk menyahmarshal data ini ke dalam Go berikut struct:

type Animal struct {
    Name  string `json:"Na me"`
    Order string `json:"Order,omitempty"`
}

menghasilkan medan "Nama" kosong disebabkan oleh ruang dalam kekunci JSON.

Punca:

Ruang dalam kekunci JSON mengelirukan proses unmarshalling. Perpustakaan cuba memadankan kekunci "Na me" dengan medan dalam struct Animal, tetapi tiada medan sepadan.

Penyelesaian:

Untuk menyelesaikan isu ini , pastikan teg medan struct dalam tag json menyatakan nama kunci yang betul, termasuk ruang:

type Animal struct {
    Name  string `json:"Na me"`
    Order string `json:"Order,omitempty"`
}

Dengan ini penandaan yang disemak, proses unmarshalling boleh berjaya memetakan kekunci JSON ke medan struct yang betul, menghasilkan output yang dijangkakan:

[
  {Name:Platypus Order:Monotremata}
  {Name:Quoll Order:Dasyuromorphia}
]

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahmarshal JSON dengan Ruang dalam Nama Utama Menggunakan `pengekodan/json` Go?. 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