Wie konvertiert man einen UTF-8-String effizient in []Byte für das JSON-Unmarshalling in Go?

Linda Hamilton
Freigeben: 2024-10-30 21:50:02
Original
360 Leute haben es durchsucht

How to Efficiently Convert a UTF-8 String to []byte for JSON Unmarshalling in Go?

Konvertieren von UTF-8-Strings in []Byte für JSON-Unmarshalling

Um einen JSON-String in Go zu entmarshalieren, müssen wir einen [ ]Byte-Slice als Eingabe. Wenn wir nur eine UTF-8-Zeichenfolge haben, wie können wir sie dann in []Byte konvertieren?

Einfache Konvertierung und Zeichenfolge in []Byte kopieren

Der Go-Typ Das System ermöglicht uns die direkte Konvertierung von einer Zeichenfolge in []Byte mit:

s := "some text"
b := []byte(s) // b is type []byte
Nach dem Login kopieren

Dieser Vorgang erstellt jedoch eine Kopie der Zeichenfolge, was bei großen Zeichenfolgen ineffizient sein kann.

Effiziente Konvertierung mit io.Reader

Eine alternative Lösung besteht darin, einen io.Reader mit strings.NewReader() zu erstellen:

s := `{"somekey":"somevalue"}`
r := strings.NewReader(s)
Nach dem Login kopieren

Dieser io.Reader kann dann übergeben werden zu json.NewDecoder() zum Unmarshalling, ohne eine Zeichenfolgenkopie zu erstellen:

var result interface{}
err := json.NewDecoder(r).Decode(&result)
Nach dem Login kopieren

Overhead-Überlegungen

Die Verwendung von strings.NewReader() und json.NewDecoder() hat etwas Mehraufwand, daher kann bei kleinen JSON-Strings die direkte Konvertierung in []Byte effizienter sein:

s := `{"somekey":"somevalue"}`
var result interface{}
err := json.Unmarshal([]byte(s), &result)
Nach dem Login kopieren

Direkte io.Reader-Eingabe

Wenn der JSON-String Die Eingabe steht als io.Reader zur Verfügung (z. B. eine Datei oder eine Netzwerkverbindung) und kann direkt an json.NewDecoder() übergeben werden:

var result interface{}
err := json.NewDecoder(myReader).Decode(&result)
Nach dem Login kopieren

Dadurch entfallen Zwischenkonvertierungen oder Kopien.

Das obige ist der detaillierte Inhalt vonWie konvertiert man einen UTF-8-String effizient in []Byte für das JSON-Unmarshalling in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!