Heim >Backend-Entwicklung >Golang >Wie deserialisiere ich dynamisch verschachtelte JSON-Strukturen in Go?

Wie deserialisiere ich dynamisch verschachtelte JSON-Strukturen in Go?

Barbara Streisand
Barbara StreisandOriginal
2024-11-15 13:38:021015Durchsuche

How to Deserialize Dynamic Nested JSON Structures in Go?

Dekodierung verschachtelter dynamischer JSON-Strukturen in Go

In Go kann die Deserialisierung von JSON-Daten mit verschachtelten dynamischen Strukturen eine Herausforderung sein. Eine aktuelle Abfrage veranschaulicht dieses Problem:

{
    "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
}

Um solche Daten zu deserialisieren, müssen wir eine Karte verwenden, um die dynamische Liste der SMS-Status zu modellieren. Hier ist der geänderte Code:

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"`
}

Unmarshaling der JSON-Daten mit dieser geänderten Struktur:

var result SMSSendJSON

if err := json.Unmarshal([]byte(src), &result); err != nil {
    panic(err)
}
fmt.Printf("%+v", result)

Deserialisiert die dynamischen verschachtelten Strukturen korrekt, was zu Folgendem führt:

{Status:OK StatusCode:100 Sms:map[79035671233:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения} 79105432212:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения} 79607891234:{Status:ERROR StatusCode:203 StatusText:Нет текста сообщения}] Balance:2676.18}

Die Schlüssel in der result.Sms-Karte entsprechen den dynamischen Telefonnummern und ihre Werte sind die jeweiligen SMS Status.

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich dynamisch verschachtelte JSON-Strukturen in Go?. 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