Rumah > Artikel > pembangunan bahagian belakang > json.Unmarshal tidak berfungsi walaupun dengan medan yang dieksport
Editor PHP Zimo mengingatkan anda bahawa walaupun apabila menyahsiri JSON, fungsi json.Unmarshal tidak akan berfungsi dengan betul jika terdapat medan yang dieksport. Ini kerana penghurai JSON hanya boleh menghuraikan medan yang dieksport dan tidak dapat mengecam medan yang tidak dieksport. Oleh itu, apabila menggunakan fungsi json.Unmarshal untuk penyahserilan, anda perlu memastikan bahawa medan yang diperlukan ialah medan yang dieksport, jika tidak, data JSON tidak akan dihuraikan dengan betul. Ini ialah isu penting yang perlu diberi perhatian apabila menggunakan pensirilan dan penyahserikan JSON saya harap ia akan membantu anda.
fail json:
{ "student_class": [ { "student_id": 1, "class_id": 2 }, { "student_id": 1, "class_id": 1 },
Struktur:
package studentclass type studentclasses struct { studentclasses []studentclass } type studentclass struct { studentid int `json:"student_id"` classid int `json:"class_id"` }
Fungsi saya:
func Read() { var studentClasses studentClass.StudentClasses jsonFile, err := os.Open("db/student_class.json") if err != nil { fmt.Println(err) } defer jsonFile.Close() byteValue, _ := io.ReadAll(jsonFile) json.Unmarshal(byteValue, &studentClasses) for i := 0; i < len(studentClasses.StudentClasses); i++ { fmt.Println(studentClasses.StudentClasses[i]) } }
Tiada apa yang dikembalikan
Apabila saya json.unmarshall...
之后添加 fmt.println(studentclasses)
时,它返回 {[]}
json.unmarshal error zero
Saya telah meneliti masalah ini, tetapi orang yang mempunyai masalah yang sama seperti saya mengatakan bahawa bidang struktur tidak dieksport. Contoh: go json.unmarshal tidak berfungsi Saya tidak tahu di mana kesilapan dan apa yang saya salah Tolong bantu saya menyelesaikan masalah ini. Terima kasih semua!
Anda tidak menyatakan nama json bagi kelas pelajar.
type studentclasses struct { studentclasses []studentclass `json:"student_class"` }
Contoh:
package main import ( "encoding/json" "fmt" ) type StudentClasses struct { StudentClasses []StudentClass `json:"student_class,omitempty"` } type StudentClass struct { StudentId int `json:"student_id"` ClassId int `json:"class_id"` } func main() { _json := `{ "student_class": [ { "student_id": 1, "class_id": 2 }, { "student_id": 1, "class_id": 1 } ] }` var studentClasses StudentClasses json.Unmarshal([]byte(_json), &studentClasses) fmt.Printf("%+v", studentClasses) }
Atas ialah kandungan terperinci json.Unmarshal tidak berfungsi walaupun dengan medan yang dieksport. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!