Lors de la sortie JSON dans un programme Go (appelé "foo"), cela peut être bénéfique pour rendre les résultats lisibles par l’homme pour une meilleure interprétabilité. Bien qu'il soit courant d'utiliser l'outil de ligne de commande jq à cette fin en redirigeant la sortie, cet article présente une solution alternative utilisant le package encoding/json intégré de Go.
Le package encoding/json fournit une prise en charge native pour générer du JSON indenté sans avoir besoin d’outils externes. En utilisant la fonction json.MarshalIndent() ou en appelant json.Encoder.SetIndent() (disponible depuis Go 1.7), vous pouvez obtenir le résultat souhaité.
Par exemple, pour indenter une carte en JSON lisible :
m := map[string]interface{}{"id": "uuid1", "name": "John Smith"} data, err := json.MarshalIndent(m, "", " ") if err != nil { panic(err) } fmt.Println(string(data))
Vous pouvez également utiliser json.Encoder avec SetIndent() :
enc := json.NewEncoder(os.Stdout) enc.SetIndent("", " ") if err := enc.Encode(m); err != nil { panic(err) }
Vous pouvez également formater des chaînes JSON existantes à l'aide de json.Indent() :
src := `{"id":"uuid1","name":"John Smith"}` dst := &bytes.Buffer{} if err := json.Indent(dst, []byte(src), "", " "); err != nil { panic(err) } fmt.Println(dst.String())
Les paramètres de préfixe et d'indentation dans ces fonctions déterminent le style d'indentation. Le préfixe précède chaque nouvelle ligne, tandis que l'indentation est répétée pour chaque niveau d'imbrication.
En tirant parti de ces méthodes, vous pouvez facilement produire du JSON lisible par l'homme dans Go sans avoir besoin d'outils ou de dépendances supplémentaires, améliorant ainsi la lisibilité et convivialité de votre sortie JSON.
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!