Maison > développement back-end > Golang > Comment le package « encoding/json » de Go peut-il générer une sortie JSON lisible par l'homme ?

Comment le package « encoding/json » de Go peut-il générer une sortie JSON lisible par l'homme ?

DDD
Libérer: 2024-11-21 08:55:09
original
320 Les gens l'ont consulté

How Can Go's `encoding/json` Package Generate Human-Readable JSON Output?

Utilisation du package Encoding/JSON de Go pour une sortie JSON lisible par l'homme

Vous mentionnez être confronté au défi de produire une sortie JSON lisible par l'homme lors du piping les résultats de votre commande foo via jq. Bien qu'il n'existe aucun wrapper jq open source connu spécialement conçu à cet effet, vous pouvez tirer parti du package d'encodage/json intégré de Go pour obtenir le résultat souhaité.

Utilisation de json.MarshalIndent() et Encoder .SetIndent()

La fonction json.MarshalIndent() fournit un moyen pratique d'encoder une valeur JSON sous forme de format chaîne. En spécifiant le préfixe et l'indentation souhaités, vous pouvez produire une sortie lisible par l'homme. De même, la méthode SetIndent() de json.Encoder vous permet d'établir une indentation pour votre sortie JSON.

Exemple de code

Voici un exemple qui démontre l'utilisation de json.MarshalIndent ():

package main

import (
    "encoding/json"
)

func main() {
    m := map[string]interface{}{"id": "uuid1", "name": "John Smith"}

    data, err := json.MarshalIndent(m, "", "  ")
    if err != nil {
        panic(err)
    }
    fmt.Println(string(data))
}
Copier après la connexion

Vous pouvez également utiliser json.NewEncoder pour contrôler indentation :

package main

import (
    "encoding/json"
    "os"
)

func main() {
    enc := json.NewEncoder(os.Stdout)
    enc.SetIndent("", "  ")

    m := map[string]interface{}{"id": "uuid1", "name": "John Smith"}

    if err := enc.Encode(m); err != nil {
        panic(err)
    }
}
Copier après la connexion

Formatage du texte JSON pré-généré

Si vous avez du texte JSON pré-généré, vous pouvez utiliser la fonction json.Indent() pour formater it :

package main

import (
    "bytes"
    "encoding/json"
)

func main() {
    src := `{"id":"uuid1","name":"John Smith"}`

    dst := &bytes.Buffer{}
    if err := json.Indent(dst, []byte(src), "", "  "); err != nil {
        panic(err)
    }
    fmt.Println(dst.String())
}
Copier après la connexion

En utilisant ces techniques, vous pouvez facilement produire une sortie JSON lisible par l'homme dans vos programmes Go sans avoir besoin pour les wrappers jq externes.

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!

source:php.cn
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