Heim >Backend-Entwicklung >Golang >Wie kann das Paket „encoding/json' von Go eine für Menschen lesbare JSON-Ausgabe generieren?

Wie kann das Paket „encoding/json' von Go eine für Menschen lesbare JSON-Ausgabe generieren?

DDD
DDDOriginal
2024-11-21 08:55:09347Durchsuche

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

Verwendung des Encoding/JSON-Pakets von Go für menschenlesbare JSON-Ausgabe

Sie erwähnen, dass Sie beim Weiterleiten vor der Herausforderung stehen, menschenlesbare JSON-Ausgaben zu erzeugen die Ergebnisse Ihres foo-Befehls über jq. Obwohl es keine bekannten Open-Source-JQ-Wrapper gibt, die speziell für diesen Zweck entwickelt wurden, können Sie das integrierte Encoding/JSON-Paket von Go nutzen, um das gewünschte Ergebnis zu erzielen.

Verwendung von json.MarshalIndent() und Encoder .SetIndent()

Die Funktion json.MarshalIndent() bietet eine praktische Möglichkeit, einen JSON-Wert zu kodieren als formatierte Zeichenfolge. Durch Angabe des gewünschten Präfixes und der gewünschten Einrückung können Sie eine für Menschen lesbare Ausgabe erstellen. In ähnlicher Weise können Sie mit der SetIndent()-Methode von json.Encoder Einrückungen für Ihre JSON-Ausgabe festlegen.

Beispielcode

Hier ist ein Beispiel, das die Verwendung von json.MarshalIndent demonstriert ():

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

Sie können zur Steuerung auch json.NewEncoder verwenden Einrückung:

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

Formatieren von vorgeneriertem JSON-Text

Wenn Sie vorgenerierten JSON-Text haben, können Sie zum Formatieren die Funktion json.Indent() verwenden 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())
}

Durch die Verwendung dieser Techniken können Sie problemlos eine für Menschen lesbare JSON-Ausgabe in Ihren Go-Programmen erstellen, ohne dass dies erforderlich ist externe JQ-Wrapper.

Das obige ist der detaillierte Inhalt vonWie kann das Paket „encoding/json' von Go eine für Menschen lesbare JSON-Ausgabe generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn