Rumah > pembangunan bahagian belakang > Golang > Menghuraikan tatasusunan JSON dalam golang menggunakan jenis tersuai

Menghuraikan tatasusunan JSON dalam golang menggunakan jenis tersuai

WBOY
Lepaskan: 2024-02-09 10:39:09
ke hadapan
745 orang telah melayarinya

使用自定义类型解析 golang 中的 JSON 数组

editor php Baicao membawakan anda artikel tentang menghuraikan tatasusunan JSON dalam golang. Dalam golang, kita boleh menggunakan jenis tersuai untuk menghuraikan tatasusunan JSON yang kompleks. Pendekatan ini bukan sahaja membolehkan pemahaman dan pemprosesan data JSON yang lebih baik, tetapi juga menyediakan cara operasi yang lebih fleksibel. Artikel ini akan memperkenalkan secara terperinci cara menggunakan jenis tersuai untuk menghuraikan tatasusunan JSON dan memberikan beberapa kod contoh praktikal untuk membantu anda memahami dan menggunakan teknik ini dengan lebih baik. Sama ada anda seorang pemula atau pembangun berpengalaman, anda boleh mendapat banyak manfaat daripada artikel ini, datang dan teroka bersama-sama!

Kandungan soalan

Saya cuba menghuraikan tatasusunan json dalam golang, formatnya adalah seperti berikut:

2beef840f8f9d8bb724c7736cb14989

Sebagai contoh, json harus mengandungi skema jadual yang berbeza. Saya telah mencuba kod berikut tetapi skema kembali kosong:

package main

import (
    "encoding/json"
    "io"
    "log"
    "os"
)

type ColumnType struct {
    Name  string `json:"name"`
    Type  string `json:"type"`
}

type Schema struct {
    Schema map[string][]ColumnType
}

func main() {

    mocksSchemas, _ := os.Open("parse_config/mock_schema.json")

    var schemas []Schema
    content, err := io.ReadAll(mocksSchemas)
    if err != nil {
        log.Fatal("Error when reading mock file: ", err)
    }
    err = json.Unmarshal(content, &schemas)
    if err != nil {
        log.Fatal("Error during Unmarshal(): ", err)
    }

    defer mocksSchemas.Close()
}
Salin selepas log masuk

Apa salah saya? Saya akan berterima kasih jika anda boleh menunjukkan kesilapan saya Terima kasih!

Penyelesaian

Untuk memadankan sumber/destinasi JSON anda boleh menggunakan jenis berikut:

type Schema map[string][]ColumnType
Salin selepas log masuk

Sebagai alternatif, anda boleh menggunakan sesuatu yang lebih mudah digunakan:

type Schema struct {
    Table   string
    Columns []ColumnType
}

func (s Schema) MarshalJSON() ([]byte, error) {
    return json.Marshal(map[string][]ColumnType{
        s.Table: s.Columns,
    })
}

func (s *Schema) UnmarshalJSON(data []byte) error {
    var m map[string][]ColumnType
    if err := json.Unmarshal(data, &m); err != nil {
        return err
    }
    for k, v := range m {
        s.Table = k
        s.Columns = v
        break
    }
    return nil
}
Salin selepas log masuk

Atas ialah kandungan terperinci Menghuraikan tatasusunan JSON dalam golang menggunakan jenis tersuai. 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