Heim >Backend-Entwicklung >Golang >Warum kodiert „json.Marshal' von Go „[]byte' als Base64-String?

Warum kodiert „json.Marshal' von Go „[]byte' als Base64-String?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-10 01:23:10337Durchsuche

Why Does Go's `json.Marshal` Encode `[]byte` as a Base64 String?

Marshaling von []Byte zu JSON

In Go unterscheidet sich das Marshalling von []Byte zu JSON geringfügig von anderen Datentypen. Anstatt die Bytes direkt als Array zu kodieren, kodiert das JSON-Paket []byte als Base64-kodierte Zeichenfolge. Dieses Verhalten wird in der Dokumentation für „encoding/json“ explizit angegeben:

Array and slice values encode as JSON arrays, except that []byte encodes as a base64-encoded string, and a nil slice encodes as the null JSON object.

Base64-Encoded String Output

In Ihrem Fall ist die Ausgabe von json.Marshal( Gruppe) enthält „AAAAAQID“. Dies stellt die Base64-Codierung Ihres []Byte-Slices dar:

originalBytes := []byte{0, 0, 0, 1, 2, 3}
encodedString := base64.StdEncoding.EncodeToString(originalBytes)

fmt.Println(encodedString) // Output: AAAAAQID

Base64-Daten dekodieren

Um die ursprünglichen []Byte-Werte aus der codierten Zeichenfolge abzurufen, müssen Sie kann die Base64-Daten dekodieren:

decodedBytes, err := base64.StdEncoding.DecodeString("AAAAAQID")
if err != nil {
    // Handle error
}

fmt.Println(decodedBytes) // Output: [0 0 0 1 2 3]

Das obige ist der detaillierte Inhalt vonWarum kodiert „json.Marshal' von Go „[]byte' als Base64-String?. 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