Heim  >  Artikel  >  Backend-Entwicklung  >  Wie deserialisiere ich JSON mit einem anonymen Array in Golang?

Wie deserialisiere ich JSON mit einem anonymen Array in Golang?

WBOY
WBOYnach vorne
2024-02-14 11:24:21847Durchsuche

如何在 Golang 中用匿名数组反序列化 json?

Wie kann man in Golang ein anonymes Array verwenden, um JSON-Daten zu deserialisieren? Dies ist ein Problem, auf das viele Entwickler häufig stoßen. Anonyme Arrays können einige einfache Datenstrukturen problemlos verarbeiten, ohne bestimmte Strukturen zu definieren. Durch die Verwendung des integrierten JSON-Pakets von Golang können wir diese Funktionalität einfach implementieren. Im Folgenden stellt Ihnen der PHP-Editor Xinyi ausführlich vor, wie Sie anonyme Arrays zum Deserialisieren von JSON-Daten in Golang verwenden. Lass uns einen Blick darauf werfen!

Frageninhalt

Ich erhalte diesen JSON von einem externen Server:

[["010117", "070117", "080117"], ["080117", "140117", "150117"], ["150117", "210117", "220117"]]

Ich muss es analysieren

package main

import (
    "encoding/json"
    "fmt"
    "io"
    "os"
    "runtime"
)

type Range struct {
    From string
    To   string
    Do   string
}

type AllRanges struct {
    Ranges []Range
}

func main() {
    var ranges AllRanges
    j, err := os.ReadFile(file)

    if err != nil {
        panic("Can't read json file")
    }

    if json.Unmarshal(j, &v) != nil {
        panic("Error reading the json")
    }
}

Beim Ausführen wird eine Panik ausgelöst, die besagt, dass beim Lesen von JSON ein Fehler aufgetreten ist

Vielen Dank im Voraus!

Lösung

  1. Dies ist kein fehlerhafter Code. Der von Ihnen gepostete Code lässt sich nicht kompilieren, da versucht wird, ihn in eine nicht deklarierte Variable zu demarshalieren v.

  2. Angenommen, v应该是ranges sollte

    sein, ist das Problem ganz einfach....

ranges 的类型为 allranges,它是一个具有命名成员的结构体,ranges

ist ein Array von Strukturen, das auch benannte Mitglieder hat.

Beim Versuch, JSON in diese Struktur zu entmarshalieren, erwartet der Unmarshaler Folgendes:

{
   "ranges": [
        { 
           "from": "..",
           "to": ..,
           "do": ".."
        },
        { etc }
   ]
}
rangesUm Daten aus einem anonymen Array von String-Arrays zu entmarshalieren, müssen Sie

als Array von String-Arrays deklarieren:

    var ranges [][]string

    ...

    if json.Unmarshal(j, &ranges) != nil {
        panic("Error reading the json")
    }

Sobald das Array in diesem Array von Arrays entmarshaled ist, müssen Sie Code schreiben, um es in den gewünschten strukturierten Wert umzuwandeln.

Dieser Spielplatz[][]string zeigt, wie man Beispieldaten erfolgreich in

unmarshaliert. Transformation wird als Übung belassen. 🎜

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich JSON mit einem anonymen Array in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen