即使有導出字段,json.Unmarshal 也不起作用
php小編子墨提示您,即使在進行JSON反序列化時,如果存在導出字段,json.Unmarshal函數也無法正常工作。這是因為JSON解析器只能解析導出字段,而無法識別非導出字段。因此,在使用json.Unmarshal函數進行反序列化時,需要確保所需字段是導出字段,否則將無法正確解析JSON數據。這是在使用JSON序列化和反序列化時需要注意的一個重要問題,希望能對您有所幫助。
問題內容json 文件:
{
"student_class": [
{
"student_id": 1,
"class_id": 2
},
{
"student_id": 1,
"class_id": 1
},
結構:
package studentclass
type studentclasses struct {
studentclasses []studentclass
}
type studentclass struct {
studentid int `json:"student_id"`
classid int `json:"class_id"`
}
我的功能:
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])
}
}
沒有返回任何內容
當我在 之后添加 時,它返回
json.unmarshal 錯誤為零
我研究過這個問題,但是和我有同樣問題的人說結構體的字段沒有導出。示例: go json.unmarshal 不起作用
我不知道錯誤在哪里以及我做錯了什么
請幫我解決這個問題。謝謝大家!
您沒有指定 studentclasses 的 json 名稱。
type studentclasses struct {
studentclasses []studentclass `json:"student_class"`
}
示例:
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)
}
相關推薦
-
C語言中如何正確使用scanf函數處理用戶輸入
標題:C語言中正確使用scanf函數進行用戶輸入的解析在C語言中,scanf函數是用來從標準輸入讀取數據的常用函數之一。它可以按照格式化字符串的要求,將用戶輸入的數據解析并賦值給變量。本文將介紹如何正
-
示例及解析:C語言中scanf函數的輸入格式
C語言是一種十分重要的程序設計語言,很多初學者在學習和使用C語言的過程中,經常會用到輸入函數scanf()。通過scanf()函數,我們可以從用戶處獲取輸入數據,然后將其存儲到指定的變量中。本文將介紹
-
精通C語言函數:全面解析常用函數的用法與原理
精通C語言函數:全面解析常用函數的用法與原理摘要:C語言中的函數是實現代碼復用和模塊化的重要工具,也是程序設計中不可或缺的一部分。本文將全面解析常用函數的用法與原理,包括函數的定義、調用和返回值,以及
-
Python中strip 函數的用法
Python中strip()函數的用法及代碼示例Python中的strip()函數是用來去除字符串開頭和結尾的指定字符(默認為空格)的函數。它可以非常方便地處理字符串的處理和整理。本文將介紹strip
-
C語言中scanf函數的使用方法詳解
C語言中scanf函數的使用方法詳解及代碼示例C語言是一門廣泛應用于各種軟件開發的編程語言,其中的輸入輸出函數在編寫程序時起著非常重要的作用。其中,scanf函數是C語言中用于讀取標準輸入的函數之一,















