Wie deserialisiere ich dynamisch verschachtelte JSON-Strukturen in Go?

Barbara Streisand
Freigeben: 2024-11-15 13:38:02
Original
915 Leute haben es durchsucht

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
}
Nach dem Login kopieren

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"`
}
Nach dem Login kopieren

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)
Nach dem Login kopieren

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}
Nach dem Login kopieren

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!

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