json.Unmarshal tidak berfungsi walaupun dengan medan yang dieksport

PHPz
Lepaskan: 2024-02-14 08:12:07
ke hadapan
753 orang telah melayarinya

即使有导出字段,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
    },
Salin selepas log masuk

Struktur:

package studentclass

type studentclasses struct {
    studentclasses []studentclass
}

type studentclass struct {
    studentid int `json:"student_id"`
    classid   int `json:"class_id"`
}
Salin selepas log masuk

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])
    }

}
Salin selepas log masuk

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"`
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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!

sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!