Dekodierung von []Byte als Strings in Go
In Go wurde die Konvertierung durchgeführt, wenn ein []Byte-Slice als JSON-String gemarshallt wurde Die Methode json.Marshal() kodiert das Byte-Slice als Base64-kodierte Zeichenfolge. Wie in der Dokumentation zu sehen ist:
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.
Diese Konvertierung wird durchgeführt, um das Fehlen einer nativen Darstellung für Rohbytes in JSON auszugleichen. Die Base64-Kodierung stellt sicher, dass das Byte-Slice als gültige JSON-Zeichenfolge transportiert wird.
Überwindung der Kodierung
Um eine JSON-Zeichenfolge mit dem ursprünglichen Inhalt eines [] zu generieren Im Byte-Feld müssen die Daten vor dem Marshalling in eine Zeichenfolge konvertiert werden. Dies kann mit der Funktion string() erreicht werden:
<code class="go"> helloStr := "Hello" helloSlc := []byte(helloStr) obj := Msg{string(helloSlc)} json, _ := json.Marshal(obj) fmt.Println(string(json))</code>
Dadurch wird die gewünschte Ausgabe erzeugt:
{"Content":"Hello"}
Dieser Ansatz stellt sicher, dass der JSON-String den ursprünglichen Inhalt des Strings enthält , statt seiner base64-codierten Darstellung.
Das obige ist der detaillierte Inhalt vonWie dekodiere ich []Byte als Strings in Go JSON?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!