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)) }
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) } }
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()) }
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!