Heim  >  Artikel  >  Backend-Entwicklung  >  Wie analysiere ich JSON-Daten mit verschachtelten dynamischen Strukturen in Go?

Wie analysiere ich JSON-Daten mit verschachtelten dynamischen Strukturen in Go?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-19 16:25:02196Durchsuche

How to Parse JSON Data with Nested Dynamic Structures in Go?

Go-Dekodierung von verschachtelten dynamischen JSON-Strukturen

Diese Diskussion untersucht die Herausforderung des Parsens von JSON-Daten mit verschachtelten dynamischen Strukturen in Go.

Problem:

Beispiel-JSON-Daten enthalten eine verschachtelte Struktur mit dynamischen Schlüsseln, wie zum Beispiel Telefonnummern, wie unten dargestellt:

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

Der bereitgestellte Beispielcode versucht, eine feste Liste von Telefonnummern zu verwenden, um die verschachtelte Struktur zu modellieren, aber dieser Ansatz schlägt aufgrund der dynamischen Natur der Telefonnummernschlüssel fehl.

Lösung:

Um verschachtelte dynamische Strukturen zu verarbeiten, sollte man zur Modellierung der Daten eine Karte anstelle einer festen Liste verwenden. Für dieses Beispiel können die folgenden Datenstrukturen verwendet werden:

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

In dieser aktualisierten Struktur wird „map[string]SMSPhone“ verwendet, um das verschachtelte „sms“-Objekt darzustellen, wobei die Zuordnungsschlüssel der Dynamik entsprechen Telefonnummern.

Um die JSON-Daten in diese Strukturen zu entpacken, kann der folgende Code verwendet werden:

var result SMSSendJSON

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

Das Ergebnis ist eine Go-Struktur mit einer Karte, die die verschachtelte dynamische Telefonnummer enthält Daten.

Verwandte Fragen, die die Verwendung von Karten für dynamische Strukturen in Go veranschaulichen, umfassen:

  • Wie man ein dynamisches JSON in Golang analysiert/deserliziert
  • Wie man das Marshalieren aufhebt JSON mit unbekannten Feldnamen zur Strukturierung in Golang?
  • JSON mit unbekannten Feldern entmarshalieren
  • JSON-String in eine Struktur entmarspilieren, die ein Element der Struktur selbst enthält

Das obige ist der detaillierte Inhalt vonWie analysiere ich JSON-Daten mit verschachtelten dynamischen 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