Maison > développement back-end > Golang > Analyser le tableau JSON dans Golang en utilisant un type personnalisé

Analyser le tableau JSON dans Golang en utilisant un type personnalisé

WBOY
Libérer: 2024-02-09 10:39:09
avant
719 Les gens l'ont consulté

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

l'éditeur php Baicao vous propose un article sur l'analyse des tableaux JSON dans Golang. Dans Golang, nous pouvons utiliser des types personnalisés pour analyser des tableaux JSON complexes. Cette approche permet non seulement de mieux comprendre et traiter les données JSON, mais offre également un mode de fonctionnement plus flexible. Cet article présentera en détail comment utiliser les types personnalisés pour analyser les tableaux JSON et donnera quelques exemples de codes pratiques pour vous aider à mieux comprendre et appliquer cette technique. Que vous soyez débutant ou développeur expérimenté, vous pouvez beaucoup bénéficier de cet article, venez explorer ensemble !

Contenu de la question

J'essaie d'analyser un tableau json en golang, le format est le suivant :

2bœuf840f8f9d8bb724c7736cb14989

Par exemple, json doit contenir un schéma de différentes tables. J'ai essayé le code suivant mais le schéma revient vide :

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()
}
Copier après la connexion

Qu'est-ce que j'ai fait de mal ? Je vous serais reconnaissant si vous pouviez signaler mon erreur Merci!

Solution de contournement

Pour faire correspondre le JSON source/destination, vous pouvez utiliser les types suivants :

type Schema map[string][]ColumnType
Copier après la connexion

Vous pouvez également utiliser quelque chose de plus simple à utiliser :

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
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal