Heim  >  Artikel  >  Backend-Entwicklung  >  So verschachteln Sie Golang JSON

So verschachteln Sie Golang JSON

WBOY
WBOYOriginal
2023-05-10 10:34:081005Durchsuche

In Golang müssen bei der Verwendung von JSON-Objekten manchmal mehrere JSON-Objekte verschachtelt werden. In diesem Artikel wird kurz vorgestellt, wie die Verschachtelung von JSON-Objekten in Golang implementiert wird.

JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat, das häufig für die Front-End- und Back-End-Datenübertragung verwendet wird. In Golang kann JSON mithilfe des in die Standardbibliothek integrierten Pakets „encoding/json“ kodiert und dekodiert werden.

Das Folgende ist ein einfaches JSON-Datenbeispiel, das Buchinformationen darstellt:

{
    "title": "The Hitchhiker's Guide to the Galaxy",
    "author": "Douglas Adams",
    "price": 5.99,
    "publisher": {
        "name": "Pan Books",
        "address": "London"
    }
}

Im obigen Beispiel ist das „Publisher“-Objekt innerhalb des „Book“-Objekts verschachtelt. Um die Verschachtelung von JSON-Objekten in Golang zu implementieren, müssen Sie eine Struktur definieren und dann die in der Standardbibliothek bereitgestellten Methoden verwenden, um JSON-Daten zu kodieren oder zu dekodieren.

Zum Beispiel können Sie eine Struktur mit dem Namen „Book“ definieren, um Buchinformationen darzustellen:

type Book struct {
    Title     string  `json:"title"`
    Author    string  `json:"author"`
    Price     float64 `json:"price"`
    Publisher struct {
        Name    string `json:"name"`
        Address string `json:"address"`
    } `json:"publisher"`
}

Im obigen Code wird die verschachtelte Struktur „Publisher“ verwendet, um die Veröffentlichungsinformationen des Buches darzustellen. Sie müssen jedem Feld in der Struktur ein „json“-Tag hinzufügen, damit beim Kodieren und Dekodieren von JSON-Daten der Feldname korrekt mit dem JSON-Schlüsselnamen abgeglichen werden kann.

Verwenden Sie die Methoden Marshal und Unmarshal, die vom Paket „encoding/json“ bereitgestellt werden, um Golang-Strukturen in JSON-Daten bzw. JSON-Daten in Golang-Strukturen zu konvertieren. Sie können beispielsweise den folgenden Code verwenden, um die Struktur „Book“ in JSON-Daten zu konvertieren:

book := Book{
    Title:  "The Hitchhiker's Guide to the Galaxy",
    Author: "Douglas Adams",
    Price:  5.99,
    Publisher: struct {
        Name    string `json:"name"`
        Address string `json:"address"`
    }{
        Name:    "Pan Books",
        Address: "London",
    },
}

jsonBytes, err := json.Marshal(book)
if err != nil {
    fmt.Println(err)
}

fmt.Println(string(jsonBytes))

Die Ausgabe des obigen Codes lautet:

{
    "title":"The Hitchhiker's Guide to the Galaxy",
    "author":"Douglas Adams",
    "price":5.99,
    "publisher":{
        "name":"Pan Books",
        "address":"London"
    }
}

Sie können wiederum den folgenden Code verwenden, um die JSON-Daten in die zu konvertieren Struktur „Buch“:

jsonStr := `{
    "title": "The Hitchhiker's Guide to the Galaxy",
    "author": "Douglas Adams",
    "price": 5.99,
    "publisher": {
        "name": "Pan Books",
        "address": "London"
    }
}`

var book Book
if err := json.Unmarshal([]byte(jsonStr), &book); err != nil {
    fmt.Println(err)
}

fmt.Printf("%+v
", book)

Das Ausgabeergebnis des obigen Codes ist:

{Title:The Hitchhiker's Guide to the Galaxy Author:Douglas Adams Price:5.99 Publisher:{Name:Pan Books Address:London}}

Zusammenfassung:

In Golang können Sie Strukturen verwenden, um eine verschachtelte Verarbeitung von JSON-Objekten zu implementieren. Sie müssen das Tag „json“ in der Struktur verwenden, um die Entsprechung zwischen Feldnamen und JSON-Schlüsselnamen anzugeben. Verwenden Sie die in der Standardbibliothek bereitgestellten Marshal- und Unmarshal-Methoden, um Golang-Strukturen in JSON-Daten bzw. JSON-Daten in Golang-Strukturen zu konvertieren.

Das obige ist der detaillierte Inhalt vonSo verschachteln Sie Golang JSON. 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
Vorheriger Artikel:js-Code für GolangNächster Artikel:js-Code für Golang