Heim Backend-Entwicklung Golang Wie verwende ich JSON in Go?

Wie verwende ich JSON in Go?

May 11, 2023 pm 04:46 PM
json 使用 go语言

JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat, das häufig zum Senden von Daten vom Server an den Client und zum Übertragen von Daten zwischen verschiedenen Systemen verwendet wird. In der Go-Sprache ist die Verwendung von JSON ebenfalls sehr einfach. In diesem Artikel wird die Verwendung von Go zur Verarbeitung von JSON-Daten vorgestellt und den Lesern Best Practices für die Verwendung von JSON in Go vermittelt.

Es gibt ein integriertes JSON-Paket in der Go-Sprache, das JSON-Daten in Go-Werte marshalieren oder entmarshalieren kann, ähnlich dem JSON-Modul in Python oder JSON-Objekten in JavaScript. Die Arbeit mit JSON in Go ist in zwei wichtige Schritte unterteilt: Marshalling und Unmarshalling.

Marshalling JSON

Malesling JSON bedeutet, ein Go-Objekt in das JSON-Format zu konvertieren, damit es über das Netzwerk übertragen werden kann. Verwenden Sie in Go die Marshal()-Methode zum Marshallen von JSON.

Zum Beispiel, wenn wir eine Struktur namens Person haben:

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}
Nach dem Login kopieren
Nach dem Login kopieren

Wir können json.Marshal() verwenden, um sie in das JSON-Format zumarshallen:

p := Person{Name: "Tom", Age: 27}
jsonData, err := json.Marshal(p)
if err != nil {
    log.Println("Error in marshalling JSON")
} else {
    log.Println(string(jsonData))
}
Nach dem Login kopieren
#🎜 🎜#Im obigen Beispiel erstellen wir ein Personenobjekt mit dem Namen p, rufen die Methode json.Marshal() auf, um es in einen JSON-String zu marsalieren, und drucken dann den JSON-String aus. Die Ausgabe sollte wie folgt aussehen:

{"name":"Tom","age":27}
Nach dem Login kopieren

Wie Sie sehen können, enthält die Ausgabezeichenfolge Schlüssel-Wert-Paare, die der Personenstruktur entsprechen. Beachten Sie, dass, wenn Ihre Struktur über private Felder verfügt, diese Felder nicht in JSON gemarshallt werden. Beim Marshallen sollten öffentliche Felder verwendet werden. Darüber hinaus sollten Sie beim Marshalling mit der Marshal()-Methode auf Fehler prüfen, falls das Marshalling fehlschlägt. Wenn keine Fehler vorliegen, wird die gemarshallte JSON-Zeichenfolge zurückgegeben.

Unmarshaling JSON

Unmarshaling JSON bedeutet, JSON-Daten in Go-Objekte zu analysieren. Verwenden Sie in Go die Methode Unmarshal(), um JSON zu entmarshalieren.

Zum Beispiel, wenn wir eine Struktur namens Person haben:

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}
Nach dem Login kopieren
Nach dem Login kopieren

Wir können json.Unmarshal() verwenden, um sie zu entmarshalieren:

var person Person
jsonString := `{"name":"Tom","age":27}`
err := json.Unmarshal([]byte(jsonString), &person)
if err != nil {
    log.Println("Error in unmarshalling JSON")
} else {
    log.Println(person.Name)
    log.Println(person.Age)
}
Nach dem Login kopieren
#🎜 🎜#In Im obigen Beispiel übergeben wir die JSON-Zeichenfolge des Person-Objekts an die Methode json.Unmarshal() und verwenden &person, um den nicht gemarshallten Wert im Personenobjekt zu speichern. Beachten Sie, dass wir beim Unmarshalling denselben Namen wie das Feld in der Struktur zum Dekodieren des JSON-Schlüssels verwenden sollten, um Dekodierungsfehler zu vermeiden. Wenn beim Dekodieren des JSON ein Fehler aufgetreten ist, wird eine Fehlermeldung zurückgegeben, andernfalls wird der dekodierte JSON-Wert im Personenobjekt gespeichert.

Best Practices

Befolgen Sie bei der Verwendung von JSON in Go diese Vorgehensweisen:

Fehler richtig behandeln
    #🎜🎜 #
  1. Wenn beim Marshalling oder Unmarshalling von JSON ein Fehler auftritt, sollte der Fehler angemessen behandelt und der Benutzer auf geeignete Weise benachrichtigt werden. Wir können beispielsweise Fehlerprotokolle in eine Protokolldatei schreiben oder Fehlermeldungen an den Benutzer zurücksenden.

JSON-Tags verwenden

  1. Sie können JSON-Tags verwenden, um Mitglieds-Tags zu Strukturfeldern hinzuzufügen, um Go-Objektdaten in das erwartete JSON-Format zu marsalieren. Das JSON-Tag enthält normalerweise JSON-Segmentschlüssel, damit Entwickler beim Marshalling ihre Eigenschaftsnamen angeben können.

Verwendung leerer Strukturen vermeiden

  1. Verwenden Sie leere Strukturen in Go, um Daten ohne Inhalt darzustellen. Verwenden Sie beim Marshallen von JSON-Daten keine leeren Strukturen, sondern stattdessen Null. Wenn Sie eine leere Struktur verwenden, ist der gemarshallte JSON möglicherweise zu ausführlich.

Explizite Typzusicherung

  1. Verwenden Sie beim Unmarshalling von JSON-Daten immer explizite Typzusicherungen, um sicherzustellen, dass der Datentyp mit dem in übereinstimmt Geben Sie Übereinstimmung ein. Wenn Sie mehrere JSON-Typen verarbeiten möchten, verwenden Sie Typwechselanweisungen, um unnötige Fehler zu vermeiden.

Bibliotheken von Drittanbietern verwenden

  1. Wenn Sie weitere erweiterte Funktionen benötigen, sollten Sie die verfügbaren JSON-Bibliotheken von Drittanbietern verwenden. Zu den häufig verwendeten JSON-Bibliotheken von Drittanbietern gehören json-iterator/go, ghodss/yaml, easyjson usw.
Zusammenfassung

In diesem Artikel haben wir die grundlegenden Vorgänge der Verwendung von JSON in der Go-Sprache vorgestellt, einschließlich Marshalling und Unmarshaling von JSON-Daten. Durch die Befolgung von Best Practices wird sichergestellt, dass Ihr Code lesbar, wartbar und erweiterbar ist. Mit diesen Vorgehensweisen können Sie die JSON-Funktionen in Go nutzen und JSON-bezogenen Code besser schreiben.

Das obige ist der detaillierte Inhalt vonWie verwende ich JSON in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Apr 02, 2025 pm 02:06 PM

In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Apr 02, 2025 pm 02:03 PM

Der Unterschied zwischen Stringdruck in GO -Sprache: Der Unterschied in der Wirkung der Verwendung von Println und String () ist in Go ...

Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Apr 02, 2025 pm 04:54 PM

Das Problem der Verwendung von RETISTREAM zur Implementierung von Nachrichtenwarteschlangen in der GO -Sprache besteht darin, die Go -Sprache und Redis zu verwenden ...

Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Apr 02, 2025 pm 12:57 PM

Zwei Möglichkeiten, Strukturen in der GO -Sprache zu definieren: Der Unterschied zwischen VAR- und Typ -Schlüsselwörtern. Bei der Definition von Strukturen sieht die Sprache oft zwei verschiedene Schreibweisen: Erstens ...

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Apr 02, 2025 pm 05:09 PM

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Bei der Verwendung von Goland für GO -Sprachentwicklung begegnen viele Entwickler benutzerdefinierte Struktur -Tags ...

Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Apr 02, 2025 pm 04:12 PM

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...

Warum gibt es bei Verwendung von SQL.Open keinen Fehler an, wenn DSN leer ist? Warum gibt es bei Verwendung von SQL.Open keinen Fehler an, wenn DSN leer ist? Apr 02, 2025 pm 12:54 PM

Warum meldet der DSN bei Verwendung von SQL.Open keinen Fehler? In Go Language, Sql.open ...

See all articles