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

PHPz
Lepaskan: 2024-02-11 19:48:08
ke hadapan
803 orang telah melayarinya

我如何解组 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"
  }
]
Salin selepas log masuk

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)
Salin selepas log masuk

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
Salin selepas log masuk

Atau gunakan go teg struct dalam medan anda:

A string `json:"answer_a"`
Salin selepas log masuk

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!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!