Unmarshalling von UTF-8-Strings in []Byte
Bei der Arbeit mit JSON erfordert die Unmarshal-Funktion eine Eingabe vom Typ []Byte. Unsere Daten könnten jedoch als UTF-8-String gespeichert werden. In diesem Artikel wird erläutert, wie eine UTF-8-Zeichenfolge für ein erfolgreiches Unmarshalling in []Byte konvertiert wird.
Konvertierung mit []Byte(s)
Gemäß der Go-Spezifikation , eine Zeichenfolge kann mit einem einfachen Casting in []Byte umgewandelt werden:
s := "some text"
b := []byte(s)
Diese Konvertierung erstellt jedoch eine Kopie des Inhalts der Zeichenfolge, was bei großen Zeichenfolgen ineffizient sein kann.
Verwenden von io.Reader für Effiziente Unmarshal
Ein alternativer Ansatz besteht darin, einen io.Reader zu verwenden, der aus der Zeichenfolge erstellt wurde:
s := `{"somekey":"somevalue"}`
reader := strings.NewReader(s)
decoder := json.NewDecoder(reader)
var result interface{}
decoder.Decode(&result)
Diese Methode vermeidet das Kopieren der Zeichenfolge und ist effizienter für große Eingaben.
Überlegungen für verschiedene Szenarien
Zusammenfassend lässt sich sagen, dass die Konvertierung von UTF-8-Strings in []Byte zum Unmarshalling entweder eine direkte Umwandlung oder die Verwendung eines io.Reader für die effiziente Verarbeitung großer Eingaben erfordert. Die Wahl hängt von den spezifischen Anforderungen der Anwendung ab.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3