Heim  >  Artikel  >  Backend-Entwicklung  >  Wie marshaliere ich ein []byte-Feld als String in der Go-JSON-Codierung?

Wie marshaliere ich ein []byte-Feld als String in der Go-JSON-Codierung?

Linda Hamilton
Linda HamiltonOriginal
2024-11-07 03:29:02954Durchsuche

How to Marshal a []byte Field as a String in Go JSON Encoding?

Marshaling von JSON []Byte als Strings in Go

Beim Codieren einer Struktur, die []Byte-Felder enthält, in JSON kann es zu einer unerwarteten String-Darstellung kommen Ergebnis. Bei dieser Kodierung wird das []Byte-Feld als Base64-kodierte Zeichenfolge gemarshallt, wie in der Dokumentation angegeben:

„Array- und Slice-Werte werden als JSON-Arrays kodiert, außer dass []Byte als Base64-kodiert wird.“ codierte Zeichenfolge, und ein Null-Slice wird als Null-JSON-Objekt codiert " wird in ein []Byte-Slice helloSlc konvertiert und dem Inhaltsfeld des obj-Msg-Objekts zugewiesen:

Beim Codieren von obj in JSON mit json.Marshal enthält das resultierende JSON die Base64-codierte Zeichenfolge Darstellung des []Byte-Feldes:
<code class="go">type Msg struct {
    Content []byte
}</code>

Ausgabe:
<code class="go">helloStr := "Hello"
helloSlc := []byte(helloStr)
obj := Msg{helloSlc}</code>

Um den ursprünglichen Zeichenfolgenwert „Hallo“ in der JSON-Ausgabe zu erhalten, muss das []Byte-Feld vorhanden sein explizit aus seiner Base64-kodierten Darstellung dekodiert, bevor es in JSON kodiert wird. Dies kann mit dem Paket „encoding/base64“ erreicht werden:
<code class="go">json, _ := json.Marshal(obj)
fmt.Println(string(json))</code>

Ausgabe:
{"Content":"SGVsbG8="}

Das obige ist der detaillierte Inhalt vonWie marshaliere ich ein []byte-Feld als String in der Go-JSON-Codierung?. 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