Home > Backend Development > Golang > How can I unmarshal JSON data and store it in a structure in Go

How can I unmarshal JSON data and store it in a structure in Go

PHPz
Release: 2024-02-11 19:48:08
forward
838 people have browsed it

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

php editor Strawberry shares a method of unpacking JSON data and storing it in a Go language structure. JSON is a commonly used data exchange format, and the Go language provides a convenient toolkit for parsing and processing JSON data. By using the "json" package built into the Go language, we can easily decompose JSON data into corresponding structures, store and process it. This method is simple and easy to understand, and can help developers process JSON data efficiently and improve development efficiency. Below we will introduce in detail how to use Go language to unmarshal JSON data and store it in a structure.

Question content

This is the json test data I stored using go struct in the program

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

This is the function I wrote to store the data but I can't get the correct response instead of getting a blank structure when printing

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)
Copy after login

But the response is [{393 The "father" of mysql is ______. { } { } [{mysql}] sql medium}]I have tried everything to solve it but no response is reached

solution

json fieldanswer_a It will not be mapped to the go field a alone.

Change the name of the go field to match the name of the json field (ignoring case):

answer_a string
Copy after login

Or use go struct tag in your fields:

A string `json:"answer_a"`
Copy after login

Do the same for the remaining go fields that don't match the corresponding json field.

The above is the detailed content of How can I unmarshal JSON data and store it in a structure in Go. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template