Heim > Backend-Entwicklung > Golang > Wie gehe ich mit Binärdaten bei der Go-JSON-Codierung um?

Wie gehe ich mit Binärdaten bei der Go-JSON-Codierung um?

Patricia Arquette
Freigeben: 2024-11-05 17:30:02
Original
462 Leute haben es durchsucht

How to Handle Binary Data in Go JSON Encoding?

Codieren von []Byte-Strings in JSON mit Go

Problem: Unerwartete JSON-Codierung von Binärdaten

In Go speichert ein []Byte-Slice rohe Binärdaten. Beim Versuch, eine Struktur mit []Byte-Feldern mithilfe von json.Marshal() in JSON zu kodieren, enthält das resultierende JSON eine unerwartete Zeichenfolgendarstellung des Slice-Inhalts anstelle der ursprünglichen Binärdaten. Zum Beispiel:

<code class="go">type Msg struct {
    Content []byte
}

func main() {
    msg := Msg{[]byte("Hello")}
    json, _ := json.Marshal(msg)
    fmt.Println(string(json)) // Prints {"Content":"SGVsbG8="}
}</code>
Nach dem Login kopieren

Grund für die Base64-Kodierung

json.Marshal() kodiert []Byte-Slices als Base64-kodierte Zeichenfolgen, da JSON keine native Darstellung für Rohbytes hat. Die Base64-Kodierung stellt Binärdaten mithilfe einer Folge druckbarer ASCII-Zeichen dar.

Lösung: Ursprüngliche Binärdaten wiederherstellen

Um die ursprünglichen Binärdaten aus der Base64-kodierten Zeichenfolge im JSON abzurufen, dekodieren Sie einfach die Zeichenfolge mit der Funktion base64.StdEncoding.DecodeString:

<code class="go">import "encoding/base64"

func main() {
    ...
    decodedBytes, _ := base64.StdEncoding.DecodeString(msg.Content)
    fmt.Println(string(decodedBytes)) // Prints "Hello"
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Binärdaten bei der Go-JSON-Codierung um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage