我如何解组 JSON 数据并将其存储在 Go 中的结构中

2024年 2月 11日 74.2k 0

我如何解组 json 数据并将其存储在 go 中的结构中

php小编草莓分享一种解组JSON数据并将其存储在Go语言结构中的方法。JSON是一种常用的数据交换格式,Go语言提供了方便的解析和处理JSON数据的工具包。通过使用Go语言内置的"json"包,我们可以轻松地将JSON数据解组成相应的结构体,并进行存储和处理。这种方法简单易懂,能够帮助开发者高效地处理JSON数据,提升开发效率。下面我们来详细介绍如何使用Go语言解组JSON数据,并将其存储在结构体中。

问题内容

这是我在程序中使用 go struct 存储的 json 测试数据

[
{
"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"
}
]

登录后复制

这是我编写的用于存储数据的函数,但无法获得正确的响应,而不是在打印时得到一个空白结构

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)

登录后复制

但得到的响应是[{393 mysql的“父亲”是______。 { } { } [{mysql}] sql medium}]我已经尝试了一切方法来解决它,但没有达到响应

解决方法

json 字段 answer_a 不会单独映射到 go 字段 a

更改 go 字段的名称以匹配 json 字段的名称(忽略大小写):

answer_a string

登录后复制

或者在您的字段中使用 go struct 标记:

A string `json:"answer_a"`

登录后复制

对与相应 json 字段不匹配的其余 go 字段执行相同的操作。

以上就是我如何解组 JSON 数据并将其存储在 Go 中的结构中的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论