php小編草莓分享一種解組JSON數(shù)據(jù)并將其存儲(chǔ)在Go語(yǔ)言結(jié)構(gòu)中的方法。JSON是一種常用的數(shù)據(jù)交換格式,Go語(yǔ)言提供了方便的解析和處理JSON數(shù)據(jù)的工具包。通過(guò)使用Go語(yǔ)言內(nèi)置的”json”包,我們可以輕松地將JSON數(shù)據(jù)解組成相應(yīng)的結(jié)構(gòu)體,并進(jìn)行存儲(chǔ)和處理。這種方法簡(jiǎn)單易懂,能夠幫助開(kāi)發(fā)者高效地處理JSON數(shù)據(jù),提升開(kāi)發(fā)效率。下面我們來(lái)詳細(xì)介紹如何使用Go語(yǔ)言解組JSON數(shù)據(jù),并將其存儲(chǔ)在結(jié)構(gòu)體中。
問(wèn)題內(nèi)容
這是我在程序中使用 go struct 存儲(chǔ)的 json 測(cè)試數(shù)據(jù)
[ { "id": 393, "question": "the \"father\" of mysql is ______.", "description": null, "answers": { "answer_a": "bill joy", "answer_b": "stephanie wall", "answer_c": "bill gates", "answer_d": "michael widenius", "answer_e": null, "answer_f": null }, "multiple_correct_answers": "false", "correct_answers": { "answer_a_correct": "false", "answer_b_correct": "false", "answer_c_correct": "false", "answer_d_correct": "true", "answer_e_correct": "false", "answer_f_correct": "false" }, "correct_answer": "answer_a", "explanation": null, "tip": null, "tags": [ { "name": "mysql" } ], "category": "sql", "difficulty": "medium" } ]
登錄后復(fù)制
這是我編寫的用于存儲(chǔ)數(shù)據(jù)的函數(shù),但無(wú)法獲得正確的響應(yīng),而不是在打印時(shí)得到一個(gè)空白結(jié)構(gòu)
func FetchQuiz(num int, category string) { // write code to read json file jsonFile, err := os.Open("test.json") if err != nil { fmt.Println(err) } defer jsonFile.Close() byteValue, _ := ioutil.ReadAll(jsonFile) fmt.Println(string(byteValue)) type Data struct { ID int Question string Description string Answers struct { A string B string C string D string E string F string } MultipleCorrectAnswers string CorrectAnswers struct { A string B string C string D string E string F string } CorrectAnswer string Explanation string Tip string Tags []struct { Name string } Category string Difficulty string } var QuizList2 []Data if err := json.Unmarshal(byteValue, &QuizList2); err != nil { fmt.Println(err.Error()) } fmt.Println(QuizList2)
登錄后復(fù)制
但得到的響應(yīng)是[{393 mysql的“父親”是______。 { } { } [{mysql}] sql medium}]我已經(jīng)嘗試了一切方法來(lái)解決它,但沒(méi)有達(dá)到響應(yīng)
解決方法
json 字段 answer_a
不會(huì)單獨(dú)映射到 go 字段 a
。
更改 go 字段的名稱以匹配 json 字段的名稱(忽略大小寫):
answer_a string
登錄后復(fù)制
或者在您的字段中使用 go struct 標(biāo)記:
A string `json:"answer_a"`
登錄后復(fù)制
對(duì)與相應(yīng) json 字段不匹配的其余 go 字段執(zhí)行相同的操作。