Bei der Entwicklung von Websites oder Webanwendungen ist es oft notwendig, JSON-Daten in Form von APIs zurückzugeben. Daher ist es von entscheidender Bedeutung, die Rückgabe von JSON-Daten in Golang zu beherrschen.
In diesem Artikel werden das JSON-Paket von Golang und seine grundlegende Verwendung vorgestellt. Außerdem erfahren Sie, wie Sie damit Golang-Datenstrukturen in JSON-Strings kodieren oder JSON-Strings in Golang-Datenstrukturen dekodieren.
In Golang-Programmen ist es sehr einfach, das JSON-Paket zum Bearbeiten von JSON-Daten zu verwenden. JSON-Strings können in Golang-Variablen geparst werden und Golang-Variablen können in JSON-Strings codiert werden.
Wenn Sie in Golang-Programmen Golang-Variablen in JSON-Strings kodieren müssen, können Sie diese Aufgabe mit der Funktion json.Marshal() erledigen. Das Folgende ist ein Beispielprogramm, das zeigt, wie eine Go-Struktur in einen JSON-String codiert wird:
package main import ( "encoding/json" "fmt" ) type Person struct { Name string Age int } func main() { p := Person{"Tom", 30} b, err := json.Marshal(p) if err != nil { fmt.Println("error:", err) return } fmt.Println(string(b)) }
Die Ausgabe lautet:
{"Name":"Tom","Age":30}
Im obigen Beispielprogramm enthält die Personenstruktur zwei Felder „Name“ und „Alter“. Wir instanziieren es als Variable namens p und übergeben es an die Funktion json.Marshal(). Die Funktion gibt ein Byte-Array einer JSON-Zeichenfolge und einen optionalen Fehler zurück.
Wenn die JSON-Kodierung fehlschlägt, wird ein Fehler ungleich Null zurückgegeben. Im obigen Beispiel prüfen wir auf Fehler und geben Fehlermeldungen aus.
Hinweis: Wenn Sie json.Marshal() zum Codieren einer JSON-Zeichenfolge verwenden, ist der Name des JSON-Felds der Name des Strukturfelds und muss mit einem Großbuchstaben beginnen.
Wenn Sie in Golang-Programmen JSON-Zeichenfolgen in Golang-Variablen dekodieren müssen, können Sie die Funktion json.Unmarshal() verwenden. Hier ist ein Beispielprogramm, das zeigt, wie man einen JSON-String in eine Go-Struktur dekodiert:
package main import ( "encoding/json" "fmt" ) type Person struct { Name string Age int } func main() { jsonStr := `{"Name":"Tom","Age":30}` var p Person err := json.Unmarshal([]byte(jsonStr), &p) if err != nil { fmt.Println("error:", err) return } fmt.Println(p.Name, p.Age) }
Die Ausgabe lautet:
Tom 30
Im obigen Beispielprogramm dekodieren wir einen JSON-String mit einer leeren Person-Struktur. Die JSON-Zeichenfolge muss in ein Byte-Array umgewandelt werden, das geändert wird, um die decodierten Ergebnisse aufzunehmen. Die dekodierten Ergebnisse werden in nicht gemarshallten Variablen gespeichert.
Hier wird ein &-Operator verwendet, um die Variablenadresse an die Funktion zu übergeben und sie zur Änderung des tatsächlichen Ergebnisses zu verwenden.
Wenn die JSON-Dekodierung fehlschlägt, wird ebenfalls ein Fehler zurückgegeben und die Fehlermeldung gedruckt.
In Golang können Sie das Paket net/http verwenden, um eine API zu erstellen und JSON-Daten zurückzugeben. Hier ist ein einfaches Beispielprogramm, das zeigt, wie man JSON-Daten mit Golang zurückgibt:
package main import ( "encoding/json" "fmt" "net/http" ) type Person struct { Name string Age int } func main() { http.HandleFunc("/person", handlePerson) http.ListenAndServe(":8080", nil) } func handlePerson(w http.ResponseWriter, r *http.Request) { p := Person{"Tom", 30} b, err := json.Marshal(p) if err != nil { fmt.Println("error:", err) return } w.Header().Set("Content-Type", "application/json") w.Write(b) }
Im obigen Beispielprogramm haben wir einen einfachen HTTP-Server mit dem Paket net/http erstellt. Wir verwenden die Funktion http.HandleFunc(), um den Pfad /person an die HandlePerson-Handlerfunktion zu binden. Die Funktion „handlePerson“ gibt eine Personenstruktur mit den Feldern „Name“ und „Alter“ zurück. Mithilfe der Funktion json.Marshal() wird die Personenstruktur in das JSON-Format codiert. Schließlich verwenden wir die http.ResponseWriter-Schnittstelle, um die JSON-Antwort zu schreiben. Vor dem Schreiben verwenden wir die Funktion w.Header().Set(), um den Content-Type des Antwortheaders auf application/json zu setzen.
Jetzt wissen Sie, wie Sie JSON-Daten mit Golang kodieren und dekodieren und wie Sie JSON-Daten in einer HTTP-Antwort zurückgeben. Das Erlernen dieser Fähigkeiten wird Ihnen die Entwicklung von Webanwendungen erleichtern.
Das obige ist der detaillierte Inhalt vonSo geben Sie JSON in Golang zurück. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!