Heim > Backend-Entwicklung > Golang > Wie deserialisiere ich JSON mit dynamischen Namen in verschachtelten Strukturen in Go?

Wie deserialisiere ich JSON mit dynamischen Namen in verschachtelten Strukturen in Go?

Susan Sarandon
Freigeben: 2024-11-22 21:24:15
Original
993 Leute haben es durchsucht

How to Deserialize JSON with Dynamic Names in Nested Structures in Go?

Dekodierung verschachtelter dynamischer Strukturen in JSON mit Go

Dieser Artikel befasst sich mit der Herausforderung der Deserialisierung von JSON-Daten, die dynamische Namen innerhalb verschachtelter Strukturen enthalten. Lassen Sie uns das Problem untersuchen und eine Lösung anbieten.

Problemerklärung

Betrachten Sie die folgende JSON-Antwort:

{
    "status": "OK",
    "status_code": 100,
    "sms": {
        "79607891234": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        },
        "79035671233": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        },
        "79105432212": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        }
    },
    "balance": 2676.18
}
Nach dem Login kopieren

Struktur:

type SMSPhone struct {
    Status     string `json:"status"`
    StatusCode int    `json:"status_code"`
    StatusText string `json:"status_text"`
}

type SMSSendJSON struct {
    Status     string     `json:"status"`
    StatusCode int        `json:"status_code"`
    Sms        []SMSPhone `json:"sms"`
    Balance    float64    `json:"balance"`
}
Nach dem Login kopieren

Das Problem entsteht durch die dynamischen Telefonnummern als Eigenschaftsnamen innerhalb der „SMS“ Objekt.

Lösung

Um diese Situation zu bewältigen, können wir eine Karte verwenden, um das „sms“-Objekt in JSON darzustellen:

type SMSPhone struct {
    Status     string `json:"status"`
    StatusCode int    `json:"status_code"`
    StatusText string `json:"status_text"`
}

type SMSSendJSON struct {
    Status     string              `json:"status"`
    StatusCode int                 `json:"status_code"`
    Sms        map[string]SMSPhone `json:"sms"`
    Balance    float64             `json:"balance"`
}
Nach dem Login kopieren

Der Deserialisierungscode sieht nun so aus:

var result SMSSendJSON

if err := json.Unmarshal([]byte(src), &result); err != nil {
    panic(err)
}
Nach dem Login kopieren

Dieser Ansatz ermöglicht es uns, verschachtelte dynamische Strukturen korrekt zu verarbeiten Los.

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich JSON mit dynamischen Namen in verschachtelten Strukturen in Go?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage