Heim > Backend-Entwicklung > Golang > Kann das „encoding/json'-Paket von Go JSON teilweise in einer Karte entmarshalieren?

Kann das „encoding/json'-Paket von Go JSON teilweise in einer Karte entmarshalieren?

DDD
Freigeben: 2024-12-29 04:27:13
Original
663 Leute haben es durchsucht

Can Go's `encoding/json` Package Partially Unmarshal JSON into a Map?

Teilweises Unmarshalling von JSON in eine Karte in Go

Problem:

Stellen Sie sich ein Szenario vor, in dem Ein Go-Server empfängt JSON-Daten, die in einem Objekt mit Schlüssel/Wert-Paaren gekapselt sind. Jeder Schlüssel entspricht einem bestimmten Werttyp, und der Server muss den Wert entsprechend dem Schlüssel in den entsprechenden Strukturtyp entmarshalieren. Die Frage ist, kann dies mit dem Paket „encoding/json“ erreicht werden?

Lösung:

Um dies zu erreichen, können wir die JSON-Daten teilweise in ein Unmarshalieren Karte von Schlüssel-Wert-Paaren, wobei die Schlüssel Zeichenfolgen und die Werte json.RawMessage-Instanzen sind. RawMessage stellt unverarbeitete JSON-Daten dar, sodass wir sie weiter in bestimmte Strukturen oder Typen entpacken können.

Hier ist der Code zur Veranschaulichung:

import (
    "encoding/json"
    "fmt"
)

func main() {
    data := []byte(`{"sendMsg":{"user":"ANisus","msg":"Trying to send a message"},"say":"Hello"}`)

    var objmap map[string]json.RawMessage
    err := json.Unmarshal(data, &objmap)
    if err != nil {
        // Handle error
    }

    // Example: Unmarshal sendMsg value into a struct
    type sendMsg struct {
        User string
        Msg  string
    }

    var s sendMsg
    err = json.Unmarshal(objmap["sendMsg"], &s)
    if err != nil {
        // Handle error
    }
    fmt.Println(s)
}
Nach dem Login kopieren

Beispielverwendung:

Im obigen Beispiel werden die JSON-Daten zunächst in a entmarshaled map[string]json.RawMessage. Um dann bestimmte Werte wie sendMsg zu analysieren, können wir die entsprechende RawMessage weiter in eine im Programm definierte Struktur entmarshalieren.

Diese Technik ermöglicht eine flexible und effiziente Handhabung von JSON-Daten mit mehreren Schlüssel-Wert-Paaren, wobei die Werte können basierend auf dem Schlüssel in verschiedene Typen entmarshallt werden.

Das obige ist der detaillierte Inhalt vonKann das „encoding/json'-Paket von Go JSON teilweise in einer Karte entmarshalieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage