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

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

WBOY
Freigeben: 2024-02-09 10:39:09
nach vorne
744 Leute haben es durchsucht

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

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
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage