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

Menghuraikan tatasusunan JSON dalam golang menggunakan jenis tersuai

WBOY
WBOYke hadapan
2024-02-09 10:39:09701semak imbas

使用自定义类型解析 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()
}

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

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
}

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!

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