Maison  >  Article  >  développement back-end  >  golang json à cartographier

golang json à cartographier

WBOY
WBOYoriginal
2023-05-13 09:38:081249parcourir

En langage Go, l'encodage et le décodage des données à l'aide de JSON sont une opération très courante. Mais dans certains cas, nous devrons peut-être convertir les données JSON en carte pour faciliter d'autres opérations sur celles-ci. Dans cet article, nous présenterons comment convertir des données JSON en type de carte à l'aide du langage Go.

Le package encoding/json est fourni dans le langage Go, qui fournit des fonctions d'encodage et de décodage pour les données JSON. Utilisez ce package pour décoder les données JSON en structures ou types primitifs dans le langage Go. Mais si nous voulons convertir les données JSON en type carte, nous devons les traiter manuellement.

Supposons que nous ayons les données JSON suivantes :

{
    "name": "John",
    "age": 22,
    "gender": "male",
    "friends": [
        {
            "name": "Marry",
            "age": 20
        },
        {
            "name": "Tom",
            "age": 23
        }
    ]
}

Voici le code pour convertir les données JSON en type de carte :

package main

import (
    "encoding/json"
    "fmt"
)

func jsonToMap(jsonStr string) (map[string]interface{}, error) {
    var result map[string]interface{}
    err := json.Unmarshal([]byte(jsonStr), &result)
    if err != nil {
        return nil, err
    }
    return result, nil
}

func main() {
    jsonStr := `{
        "name": "John",
        "age": 22,
        "gender": "male",
        "friends": [
            {
                "name": "Marry",
                "age": 20
            },
            {
                "name": "Tom",
                "age": 23
            }
        ]
    }`
    result, err := jsonToMap(jsonStr)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(result)
}

Le code définit une fonction jsonToMap, qui reçoit une chaîne JSON en tant que paramètre et renvoie un résultat de carte. de type [string]interface{}. Dans la fonction, nous utilisons la méthode json.Unmarshal pour décoder la chaîne JSON en type de carte. Dans l'objet map[string]interface{} décodé, la clé correspond à la chaîne dans les données JSON et le type de valeur est le même que le type de données JSON correspondant. Étant donné que le type de données dans JSON n'est pas limité, après décodage, nous définissons le type de valeur du résultat comme type interface{}.

Dans la fonction principale, nous transmettons la chaîne JSON à la fonction jsonToMap et imprimons le résultat renvoyé. En exécutant le programme, nous pouvons obtenir le résultat suivant :

map[name:John age:22 friends:[map[age:20 name:Marry] map[age:23 name:Tom]] gender:male]

Comme vous pouvez le voir, après avoir converti JSON en carte, nous pouvons opérer dessus comme nous le souhaitons. Par exemple, nous pouvons obtenir la valeur correspondante via la clé, telle que result["name"] pour obtenir la chaîne John. De plus, lorsque les données JSON sont complexes, nous pouvons également utiliser la méthode de conversion de map en struct pour faciliter les opérations de données et la conversion de type.

Résumé

Cet article détaille la méthode de conversion des données JSON en carte en langage Go. Nous avons utilisé la méthode Unmarshal dans le package encoding/json pour décoder la chaîne JSON en un type de carte et avons expliqué certains des points qui nécessitent une attention particulière. En étudiant cet article, nous devrions avoir une compréhension plus approfondie des problèmes causés par l'utilisation de JSON pour traiter les données et être en mesure de traiter les données plus efficacement.

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!

Déclaration:
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