Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh menyahmarshal data JSON dan menyimpannya dalam struktur dalam Go

Bagaimanakah saya boleh menyahmarshal data JSON dan menyimpannya dalam struktur dalam Go

PHPz
PHPzke hadapan
2024-02-11 19:48:08772semak imbas

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

editor php Strawberry berkongsi kaedah membongkar data JSON dan menyimpannya dalam struktur bahasa Go. JSON ialah format pertukaran data yang biasa digunakan, dan bahasa Go menyediakan kit alat yang mudah untuk menghuraikan dan memproses data JSON. Dengan menggunakan pakej "json" terbina dalam bahasa Go, kami boleh menguraikan data JSON ke dalam struktur yang sepadan, menyimpan dan memprosesnya dengan mudah. Kaedah ini mudah dan mudah difahami serta boleh membantu pembangun memproses data JSON dengan cekap dan meningkatkan kecekapan pembangunan. Di bawah ini kami akan memperkenalkan secara terperinci cara menggunakan bahasa Go untuk menyahmarshal data JSON dan menyimpannya dalam struktur.

Kandungan soalan

Ini adalah data ujian json yang saya simpan menggunakan go struct dalam program saya

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

Ini adalah fungsi yang saya tulis untuk menyimpan data tetapi saya tidak dapat respons yang betul daripada mendapatkan struktur kosong semasa mencetak

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)

Tetapi jawapan yang saya dapat ialah [{393 "Bapa" mysql ialah ______. { } { } [{mysql}] sql medium}] Saya telah mencuba segala-galanya untuk menyelesaikannya tetapi tidak mendapat respons

penyelesaian

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

Tukar nama medan pergi agar sepadan dengan nama medan json (abaikan huruf besar):

answer_a string

Atau gunakan go teg struct dalam medan anda:

A string `json:"answer_a"`

Lakukan perkara yang sama untuk baki medan go yang tidak sepadan dengan medan json yang sepadan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menyahmarshal data JSON dan menyimpannya dalam struktur dalam Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam