Wie deserialisiere ich JSON mit einem anonymen Array in Golang?

WBOY
Freigeben: 2024-02-14 11:24:21
nach vorne
894 Leute haben es durchsucht

如何在 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")
    }
}
Nach dem Login kopieren

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 }
   ]
}
Nach dem Login kopieren
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")
    }
Nach dem Login kopieren
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!

Verwandte Etiketten:
Quelle:stackoverflow.com
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage