Rumah >pembangunan bahagian belakang >Golang >json.Unmarshal tidak berfungsi walaupun dengan medan yang dieksport

json.Unmarshal tidak berfungsi walaupun dengan medan yang dieksport

PHPz
PHPzke hadapan
2024-02-14 08:12:07822semak imbas

即使有导出字段,json.Unmarshal 也不起作用

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.

Kandungan soalan

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!

Penyelesaian

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:GoLang: warna sempadan gocuiArtikel seterusnya:GoLang: warna sempadan gocui