Heim  >  Artikel  >  Backend-Entwicklung  >  Analysieren Sie das JSON-Array in Golang mit einem benutzerdefinierten Typ

Analysieren Sie das JSON-Array in Golang mit einem benutzerdefinierten Typ

WBOY
WBOYnach vorne
2024-02-09 10:39:09668Durchsuche

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

php-Editor Baicao bringt Ihnen einen Artikel über das Parsen von JSON-Arrays in Golang. In Golang können wir benutzerdefinierte Typen verwenden, um komplexe JSON-Arrays zu analysieren. Dieser Ansatz ermöglicht nicht nur ein besseres Verständnis und eine bessere Verarbeitung von JSON-Daten, sondern bietet auch eine flexiblere Arbeitsweise. In diesem Artikel wird detailliert beschrieben, wie Sie benutzerdefinierte Typen zum Parsen von JSON-Arrays verwenden, und es werden einige praktische Beispielcodes bereitgestellt, die Ihnen helfen, diese Technik besser zu verstehen und anzuwenden. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, Sie werden von diesem Artikel sehr profitieren. Kommen Sie und erkunden Sie ihn gemeinsam!

Frageninhalt

Ich versuche, ein JSON-Array in Golang zu analysieren. Das Format ist wie folgt:

2beef840f8f9d8bb724c7736cb14989

Zum Beispiel sollte JSON Schemata verschiedener Tabellen enthalten. Ich habe den folgenden Code ausprobiert, aber das Schema gibt leer zurück:

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()
}

Was habe ich falsch gemacht? Ich wäre Ihnen dankbar, wenn Sie mich auf meinen Fehler hinweisen könnten Danke!

Problemumgehung

Um Quell-/Ziel-JSON abzugleichen, können Sie die folgenden Typen verwenden:

type Schema map[string][]ColumnType

Alternativ können Sie etwas verwenden, das einfacher zu verwenden ist:

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
}

Das obige ist der detaillierte Inhalt vonAnalysieren Sie das JSON-Array in Golang mit einem benutzerdefinierten Typ. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen