Serialisierung und Deserialisierung von JSON-Daten
Einführung | Der vollständige Name von json lautet Javascript-Objektnotation, und der vollständige chinesische Name lautet: js-Objektnotation. Zu den Serialisierungs- und Deserialisierungsprotokollen gehören: JSON, XML, YaML, Protokollpuffer usw. Unter diesen ist JSON die Hauptübertragungsform für Front-End- und Back-End-API-Vertragsdaten. json unterstützt vier Datentypen: numerische Werte, boolesche Werte, Arrays und Objekte. Mit diesen vier Datentypen können komplexe Datenmodelle erstellt werden. |
In der Go-Sprache können wir die JSON-Standardbibliothek verwenden, um die Datenserialisierung und -deserialisierung zu implementieren. Diese Bibliothek bietet praktische Methoden zum Serialisieren und Deserialisieren von Karten, Strukturen, Arrays, Slices und integrierten primitiven Datentypen. Durch die Verwendung der JSON-Standardbibliothek können wir die Daten problemlos in das JSON-Format konvertieren und bei Bedarf wieder in den ursprünglichen Datentyp analysieren. Dies bietet uns einen hohen Komfort bei der Datenverarbeitung.
Hier werde ich drei Beispiele geben, um die Verwendung von JSON zu veranschaulichen. Für Anfänger kann es sein, dass Sie oft nur ein Strukturobjekt zum Empfangen und Senden von Daten verwenden. Schauen wir uns unten konkrete Beispiele an. 1. Verwenden Sie ein Strukturobjekt, um Daten zu empfangen: „ Typ Personenstruktur { Namenszeichenfolge „json:“name““. Alter int `json:"age"` } func main() { data := `{"name": "Alice", "age": 25}` var p Person err := json.Unmarshal([]byte(data), &p) if err != nil { fmt.Println("Fehler beim Parsen von JSON:", Fehler) zurückkehren
Typ Personenstruktur {<br>
Namenszeichenfolge „json:"name"`<br>
Alter int `json:"age"`<br>
}
<br>
func main() {<br>
var (<br>
neuPro Person<br>
bts []Byte<br>
)<br>
pro:=Person{<br>
Name: „Lilie“,<br>
Alter: 29,<br>
}<br>
// Serialisierung<br>
if bts, err = json.Marshal(per); err !=nil{<br>
log.Fatal(err.Error())<br>
zurück<br>
}
<br>
if err = json.Unmarshal(bts, &newPer); err !=nil{<br>
log.Fatal(err.Error())<br>
zurück<br>
}<br>
fmt.Println(newPer)<br>
}
func main() {<br>
var (<br>
smap = map[string]int{<br>
„Alter“: 28,<br>
„Sex“: 1,<br>
„Boden“: 12,<br>
}<br>
newSmap = make(map[string]int)<br>
bts []Byte<br>
)<br>
if bts, err = json.Marshal(smap) err !=nil {<br>
log.Fatal(err.Error())<br>
zurück<br>
}<br>
if err = json.Umarshal(bts, &newSmap) err !=nil {<br>
log.Fatal(err.Error())<br>
zurück<br>
}<br>
fmt.Println(newSmap)<br>
}
func main() {<br>
var (<br>
Alter []int = []int{23, 20, 28, 25, 30}<br>
bts []Byte<br>
äh fehler<br>
newAges = make([]int, len(ages))<br>
)<br>
if bts, err = json.Marshal(ages); err != nil {<br>
fmt.Println(err.Error())<br>
zurück<br>
}<br>
if err = json.Unmarshal(bts, &newAges); err != nil {<br>
fmt.Println(err.Error())<br>
zurück<br>
}<br>
fmt.Println("new ages: ", newAges)<br>
zurück<br>
}
Anfänger sind sich der JSON-Serialisierung und Deserialisierung von Strukturen relativ bewusst, verwenden die beiden letzteren jedoch möglicherweise selten oder nie.
- Für Daten vom Typ Array werden sie von einigen Frontends in Geschäftsszenarien verwendet.
- Für den Kartentyp: Wenn die REST-Schnittstelle eines Drittanbieters auf dem Go-Sprachserver aufgerufen wird, benötigt der Server im Allgemeinen nur den angegebenen Rückgabecode, um festzustellen, ob der Aufruf erfolgreich ist. Der Programmierer wollte nicht die gesamte Strukturdefinition schreiben, oder vielleicht war er faul, also benutzte er ein Map[string]interface{}, um die Rückgabedaten zu empfangen. Zu diesem Zeitpunkt wird nach der Deserialisierung über Unmarshal in der JSON-Standardbibliothek der Rückgabecode über map["err_code"].(int) abgerufen und anschließend eine andere nachfolgende Verarbeitungslogik ausgeführt.
Hier möchte ich auch die Funktionen erklären, die ich manchmal verwende, wenn ich eine Struktur verwende, zum Beispiel die Tag-Wert-Funktion omitempty, die vom JSON der Struktur unterstützt wird:
Typ Personenstruktur {<br>
Namenszeichenfolge „json:"name,omitempty"`<br>
Alter int `json:"age"`<br>
}<br>
Das heißt, wenn der Tag-Wert der Funktion omitempty festgelegt ist und der Datenelementwert der entsprechenden Struktur Null ist, wird dieser nicht ausgegeben. Das heißt, wenn ein Element in den vom Server zurückgegebenen Strukturdaten leer ist und dieses Element nicht an das Frontend zurückgegeben wird, können Sie das JSON-Tag-Wertattribut omitempty verwenden.
Hier stellen wir Ihnen eine JSON-Parsing-Bibliothek zur Verfügung, die von Taowen, einem leitenden Ingenieur der Didi Company, geschrieben wurde und die schnellste der Welt ist. Github-Adresse: jsoniter.
- Detaillierte Einführung von OpenFermion: Klicken Sie zum Anzeigen
- OpenFermion-Download-Adresse: Klicken Sie zum Herunterladen
Das obige ist der detaillierte Inhalt vonSerialisierung und Deserialisierung von JSON-Daten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Ursachen und Lösungen für Fehler Bei der Verwendung von PECL zur Installation von Erweiterungen in der Docker -Umgebung, wenn die Docker -Umgebung verwendet wird, begegnen wir häufig auf einige Kopfschmerzen ...

Viele Website -Entwickler stehen vor dem Problem der Integration von Node.js oder Python Services unter der Lampenarchitektur: Die vorhandene Lampe (Linux Apache MySQL PHP) Architekturwebsite benötigt ...

Verwenden Sie Python im Linux -Terminal ...

Konfigurieren Sie die Timing -Timing -Timing -Timing -Timing auf der MacOS -Plattform, wenn Sie die Timing -Timing -Timing -Timing von APScheduler als Service konfigurieren möchten, ähnlich wie bei NGIN ...

Multithreading in der Sprache kann die Programmeffizienz erheblich verbessern. Es gibt vier Hauptmethoden, um Multithreading in C -Sprache zu implementieren: Erstellen Sie unabhängige Prozesse: Erstellen Sie mehrere unabhängig laufende Prozesse. Jeder Prozess hat seinen eigenen Speicherplatz. Pseudo-MultitHhreading: Erstellen Sie mehrere Ausführungsströme in einem Prozess, der denselben Speicherplatz freigibt und abwechselnd ausführt. Multi-Thread-Bibliothek: Verwenden Sie Multi-Thread-Bibliotheken wie PThreads, um Threads zu erstellen und zu verwalten, wodurch reichhaltige Funktionen der Thread-Betriebsfunktionen bereitgestellt werden. Coroutine: Eine leichte Multi-Thread-Implementierung, die Aufgaben in kleine Unteraufgaben unterteilt und sie wiederum ausführt.

In Bezug auf das Problem der Entfernung des Python -Dolmetschers, das mit Linux -Systemen ausgestattet ist, werden viele Linux -Verteilungen den Python -Dolmetscher bei der Installation vorinstallieren, und verwendet den Paketmanager nicht ...

Um eine Web.xml -Datei zu öffnen, können Sie die folgenden Methoden verwenden: Verwenden Sie einen Texteditor (z.
