Ich habe eine Struktur, die Zeichenfolgen als [] Bytefelder enthält, die ich in JSON codieren möchte. Der generierte JSON enthält jedoch eine nicht erwartete Stringdarstellung des Slice-Inhalts. Hier ist ein Beispiel dafür, was ich verweisen:Marshaling JSON [] Byte als Zeichenfolgen in Go
package main
import (
"fmt"
"encoding/json"
)
type Msg struct {
Content []byte
}
func main() {
helloStr := "Hello"
helloSlc := []byte(helloStr)
fmt.Println(helloStr, helloSlc)
obj := Msg{helloSlc}
json, _ := json.Marshal(obj)
fmt.Println(string(json))
}
Dies erzeugt die folgende Ausgabe:
Hello [72 101 108 108 111]
{"Content":"SGVsbG8="}
Welche Umwandlung ist die json.Marshal() Durchführung dieses Verfahrens auf die [] Byte codierte Zeichenfolge. Wie kann ich ein JSON mit dem ursprünglichen Inhalt meines Strings {"Content": "Hello"} generieren?
Also, ich denke, die einzige Möglichkeit, meine JSON richtig zu formatieren wäre, das [] Byte in eine Zeichenkette vor der Kodierung zu werfen. Oder gibt es einen besseren Ansatz für dieses Problem? – MonkeyButter
Ihr JSON ist richtig formatiert. Dieses Verhalten ist kein Fehler und beabsichtigt. Wenn Sie eine String-Repräsentation haben wollen und nur mit Text arbeiten wollen, verwenden Sie 'string' anstelle von' [] byte'. – nemo