目录
问题内容
解决方法
首页 后端开发 Golang 我如何解组 JSON 数据并将其存储在 Go 中的结构中

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

Feb 11, 2024 pm 07:48 PM
go语言

我如何解组 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 中的结构中的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

golang 如何使用反射访问私有字段和方法 golang 如何使用反射访问私有字段和方法 May 03, 2024 pm 12:15 PM

golang 如何使用反射访问私有字段和方法

golang函数动态创建新函数的技巧 golang函数动态创建新函数的技巧 Apr 25, 2024 pm 02:39 PM

golang函数动态创建新函数的技巧

Go语言中的性能测试与单元测试的区别 Go语言中的性能测试与单元测试的区别 May 08, 2024 pm 03:09 PM

Go语言中的性能测试与单元测试的区别

Golang技术在设计分布式系统时应注意哪些陷阱? Golang技术在设计分布式系统时应注意哪些陷阱? May 07, 2024 pm 12:39 PM

Golang技术在设计分布式系统时应注意哪些陷阱?

Golang技术在机器学习中使用的库和工具 Golang技术在机器学习中使用的库和工具 May 08, 2024 pm 09:42 PM

Golang技术在机器学习中使用的库和工具

golang函数命名约定的演变 golang函数命名约定的演变 May 01, 2024 pm 03:24 PM

golang函数命名约定的演变

Golang技术在移动物联网开发中的作用 Golang技术在移动物联网开发中的作用 May 09, 2024 pm 03:51 PM

Golang技术在移动物联网开发中的作用

golang可变参数是否可以用于函数返回值? golang可变参数是否可以用于函数返回值? Apr 29, 2024 am 11:33 AM

golang可变参数是否可以用于函数返回值?

See all articles