Detaillierte Erläuterung der Anwendung der Json-Serialisierung in Golang

藏色散人
Freigeben: 2021-03-25 17:15:58
nach vorne
2613 Leute haben es durchsucht

Über mich

Detaillierte Erläuterung der Anwendung der Json-Serialisierung in GolangGolangs JSON-Serialisierungs- und Deserialisierungsvorgänge sind wirklich umständlich. Wenn Sie also an Hochsprachenfunktionen gewöhnt sind, wird es unangenehm sein, auf diese eher nativen Schreibmethoden umzusteigen.

Keine BBs mehr, beginnen Sie mit der Aufnahme.

Auswahl der Serialisierungsbibliothek

Wenn Sie eine kleine Demo schreiben oder ein kleines Tool ohne groß angelegte Nutzungsszenarien erstellen, ist die verwendete Bibliothek dieselbe, da die Leistung nicht offensichtlich ist. Wenn es jedoch in tatsächlichen Projekten verwendet wird und mit hoher Parallelität, großer Kapazität und anderen Szenarien einhergeht, empfehle ich dennoch die Verwendung

.

go verfügt über eine eigene JSON-Bibliothek

"encoding/json" 官当自带
Nach dem Login kopieren
json-iterator

json-iterator, bekannt als der schnellste Go-JSON-Parser. Es ist mit der offiziellen Schreibmethode kompatibel, die ich jetzt verwende.

github.com/json-iterator/go

Effizienzvergleich

ns Nanosekunden-Betriebsvorgang

ns/opZuordnungsbytesjsoniter-Dekodierung 5623 ns/op160 B/op3 Zuweisungen/opStandardkodierung2213 ns/op712 B/op5. Zuweisungen/opeasyj Sohn kodieren883 ns /op576 B/op3 Zuweisungen/opjsoniter encode837 ns/op384 B/op4 Zuweisungen/op.
type Hero struct {
    Name string
    Age int
    Birthday string
    Sal float64
    Skill string}
Nach dem Login kopieren
hero := Hero{
    Name:     "小王",
    Age:      20,
    Birthday: "2021-02-23",
    Sal:      88.02,
    Skill:    "技能",}jsonStu, err := json.Marshalif err != nil {
    fmt.Println("生成json字}fmt.Println(string(jsonStu))
Nach dem Login kopieren
Deserialisierung
str := "{\"Name\":\"张三丰\",\"Age\":98,\"Birthday\":\"2001-09-21\",\"Sal\":3800.85,\"Skill\":\"武当剑法\"}"
var hero Hero
err := json.Unmarshal([]byte(str), &hero)
if err != nil {
fmt.Printf("unmarshal err=%v\n", err)
}
Nach dem Login kopieren
Struktur-Array
str := `[{"Name":"张三丰","Age":98,"Birthday":"2001-09-21","Sal":3800.85,"Skill":"武当剑法"},{"Name":"张无忌","Age":28,"Birthday":"2004-09-21","Sal":300.85,"Skill":"乾坤大挪移"}]`

var hero []Hero
err := json.Unmarshal([]byte(str), &hero)
if err != nil {
fmt.Printf("unmarshal err=%v\n", err)
}
fmt.Printf("反序列化后 hero=%v", hero)
Nach dem Login kopieren

Zuteilungszeiten
Standarddekodierung 35510 ns/op
Coding Case Serialisierung
struct structstructure arrayZwei Möglichkeiten: Eine wird direkt in ein Strukturarray deserialisiert, die andere wird in ein Slice deserialisiert, der Inhalt ist eine Map[string]-Schnittstelle {}
Slice

str := `[{"Name":"张三丰","Age":98,"Birthday":"2001-09-21","Sal":3800.85,"Skill":"武当剑法"},{"Name":"张无忌","Age":28,"Birthday":"2004-09-21","Sal":300.85,"Skill":"乾坤大挪移"}]`

//定义一个slice
var slice []map[string]interface{}
//注意:反序列化map,不需要make,因为make操作被封装到Unmarshal函数
err := json.Unmarshal([]byte(str), &slice)
if err != nil {
fmt.Printf("unmarshal err=%v\n", err)
}
fmt.Printf("反序列化后 slice=%v\n", slice)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Anwendung der Json-Serialisierung in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:learnku.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage