Heim  >  Artikel  >  Backend-Entwicklung  >  So führen Sie eine Strukturkonvertierung in Golang durch

So führen Sie eine Strukturkonvertierung in Golang durch

PHPz
PHPzOriginal
2023-03-22 16:31:492096Durchsuche

Golang-Sprache ist eine objektorientierte Programmiersprache, die gut lesbar und wartbar ist. Für die meisten Entwickler ist es bequemer und schneller, Golang für die Entwicklung zu verwenden. In Golang ist struct ein sehr verbreiteter Datentyp, der eine Reihe von Attributen eines Objekts darstellen kann. In der tatsächlichen Entwicklung ist es häufig erforderlich, zwischen Strukturen zu konvertieren. Heute erfahren Sie, wie Golang die Strukturkonvertierung durchführt.

Definieren Sie die Struktur

Zuerst definieren wir eine Struktur:

type Person struct {
    Name    string
    Age     int
    Address Address
}

type Address struct {
    Province string
    City     string
    Street   string
}

Im obigen Code haben wir zwei Strukturen definiert, eine davon ist „Person“, die die Eigenschaften „Name“, „Alter“ und „Adresse“ enthält, wobei „Adresse“ eine verschachtelte Struktur ist.

Konvertieren Sie die Struktur in JSON

In der tatsächlichen Entwicklung müssen wir die Struktur häufig in das JSON-Format konvertieren. Das in Golang integrierte Encoding/JSON-Paket bietet praktische JSON-Codierungs- und Decodierungsfunktionen. Mit diesem Paket können wir Strukturen in Daten im JSON-Format konvertieren.

import "encoding/json"

func main() {
    person := Person{Name: "Tom", Age: 18, Address: Address{Province: "Beijing", City: "Beijing", Street: "Wudaokou"}}
    jsonBytes, err := json.Marshal(person)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(string(jsonBytes))
}

Im obigen Code erstellen wir zunächst eine Person-Instanz und rufen dann json.Marshal() auf, um die Instanz in Daten im JSON-Format zu konvertieren. Tritt während des Konvertierungsvorgangs ein Fehler auf, wird eine Fehlermeldung ausgegeben, andernfalls wird der String des konvertierten Ergebnisses ausgegeben.

JSON in Struktur konvertieren

Zusätzlich zur Konvertierung von Strukturen in das JSON-Format müssen wir häufig auch Daten im JSON-Format in Strukturen konvertieren. Im obigen Beispiel haben wir person in das JSON-Format konvertiert. Nun wandeln wir die JSON-Daten in eine Struktur um.

jsonStr := `{"Name":"Tom","Age":18,"Address":{"Province":"Beijing","City":"Beijing","Street":"Wudaokou"}}`
person := Person{}
err := json.Unmarshal([]byte(jsonStr), &person)
if err != nil {
    fmt.Println(err)
}
fmt.Println(person)

Im obigen Code definieren wir zunächst die JSON-Formatdaten als jsonStr und rufen dann json.Unmarshal() auf, um sie in eine Personenstruktur zu konvertieren. Wenn während des Konvertierungsvorgangs ein Fehler auftritt, wird ebenfalls die Fehlermeldung ausgegeben, andernfalls wird die konvertierte Person-Strukturinstanz ausgegeben.

Feldkonvertierung

In einigen Fällen stimmen die Feldnamen der Daten nicht mit den Feldnamen in der Struktur überein. In diesem Fall ist eine Feldkonvertierung erforderlich. In Golang kann dies erreicht werden, indem der Attributname der Struktur in Tag geändert wird.

type Person struct {
    Name    string `json:"name"`
    Age     int    `json:"age"`
    Address Address
}

type Address struct {
    Province string `json:"province"`
    City     string `json:"city"`
    Street   string `json:"street"`
}

Im obigen Code haben wir das JSON-Tag vor dem Strukturattributnamen hinzugefügt, der den JSON-Attributnamen angibt. Wenn das Tag während des Konvertierungsprozesses vorhanden ist, hat es Vorrang.

Arrays existieren in Strukturen

In Strukturen kann es Attribute geben, die Arrays enthalten. In diesem Fall müssen wir das Array durchlaufen.

type Person struct {
    Name    string    `json:"name"`
    Age     int       `json:"age"`
    Address []Address `json:"address"`
}

type Address struct {
    Province string `json:"province"`
    City     string `json:"city"`
    Street   string `json:"street"`
}

func main() {
    jsonStr := `{"name":"Tom","age":18,"address":[{"province":"Beijing","city":"Beijing","street":"Wudaokou"},{"province":"Henan","city":"Kaifeng","street":"Longting"}]}`
    person := Person{}
    err := json.Unmarshal([]byte(jsonStr), &person)
    if err != nil {
        fmt.Println(err)
    }
    for _, a := range person.Address {
        fmt.Println(a.Province, a.City, a.Street)
    }
}

Im obigen Code enthält die Person-Struktur ein Array von Adressen, die wir durchlaufen müssen. Während des Konvertierungsprozesses können wir Unmarshal verwenden, um Daten im JSON-Format in Personenstrukturinstanzen zu konvertieren und dann das Adressarray zu durchlaufen, um die Provinz-, Stadt- und Straßenattribute jeder Adressinstanz auszugeben.

Zusammenfassung

In Golang ist die Strukturkonvertierung ein relativ häufiger Vorgang. Durch die Einleitung dieses Artikels haben wir erfahren, wie Golang Struktur und JSON ineinander konvertiert. Für einige Sonderfälle, wie z. B. Feldkonvertierung und Array-Durchquerung, sind tiefergehende Kenntnisse und Bedienungsschritte erforderlich. Die Strukturkonvertierungsfunktion von Golang macht unsere Entwicklung bequemer und schneller.

Das obige ist der detaillierte Inhalt vonSo führen Sie eine Strukturkonvertierung in Golang durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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