Heim > Backend-Entwicklung > Golang > Wie vermeide ich Schnittstellen-Assertionsfehler beim Deserialisieren von JSON in Go?

Wie vermeide ich Schnittstellen-Assertionsfehler beim Deserialisieren von JSON in Go?

Barbara Streisand
Freigeben: 2024-11-14 13:53:02
Original
361 Leute haben es durchsucht

How to Avoid Interface Assertion Errors when Deserializing JSON in Go?

Schnittstellenzusicherungen bei der JSON-Deserialisierung verstehen

In Go kann die Deserialisierung von JSON-Daten in eine bestimmte Datenstruktur manchmal zu Fehlern bei der Schnittstellenkonvertierung führen. Dies tritt normalerweise auf, wenn versucht wird, einen Schnittstellentyp in einem anderen Strukturtyp zu bestätigen.

Betrachten Sie das folgende Beispiel:

type Data struct {
    Content string
    Links   []string
}
Nach dem Login kopieren

Beim Deserialisieren von JSON in eine Variable vom Typ „Daten“ ist es wichtig, dies zu bestätigen dass die Schnittstellenvariable (anInterface) den erwarteten Datentyp enthält. Die Zuweisung des folgenden Ausdrucks führt zu einem Laufzeitfehler:

AData2 = anInterface.(Data)
Nach dem Login kopieren

Dieser Fehler tritt auf, weil Go erwartet, dass anInterface eine Map[string]interface{} ist, obwohl es tatsächlich ein Objekt vom Typ Data enthält. Um dieses Problem zu lösen, muss unbedingt sichergestellt werden, dass anInterface auf einen Wert verweist, der strukturell mit Daten kompatibel ist.

Richtiger Deserialisierungsansatz

Die geeignete Methode zum Deserialisieren von JSON-Daten in a Die Datenstruktur soll direkt in diese Variable entmarshaliert werden:

var AData2 Data

err := json.Unmarshal([]byte(value), &AData2)
if err != nil {
    panic(err)
}
Nach dem Login kopieren

Auf diese Weise verarbeitet Go automatisch die Konvertierung zwischen JSON und dem gewünschten Datentyp, um sicherzustellen, dass während der Laufzeit keine Typzusicherungsfehler auftreten.

Das obige ist der detaillierte Inhalt vonWie vermeide ich Schnittstellen-Assertionsfehler beim Deserialisieren von JSON 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