Heim >Backend-Entwicklung >Golang >Warum löst meine JSON-Deserialisierung einen Schnittstellen-Assertionsfehler aus?

Warum löst meine JSON-Deserialisierung einen Schnittstellen-Assertionsfehler aus?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-27 06:41:09397Durchsuche

Why Does My JSON Deserialization Throw an Interface Assertion Failure?

Fehler bei der Schnittstellenzusicherung während der JSON-Deserialisierung

Problem:

Beim Versuch, danach eine Schnittstelle für einen bestimmten Strukturtyp zu bestätigen Beim Deserialisieren von JSON wird ein Fehler ausgegeben, der besagt, dass die Schnittstelle nicht den Erwartungen entspricht Typ.

Spezifischer Fehler:

panic: interface conversion: interface {} is map[string]interface {}, not main.Data

Details:

Der Code versucht, JSON-Daten in eine Schnittstelle zu deserialisieren und bestätigen Sie dann die Schnittstelle zu einer Datenstruktur. Zur Laufzeit erwartet Go jedoch, dass die Schnittstelle eine Map[string]interface{} und kein Datenobjekt ist.

Lösung:

Richtige Schnittstellenbehauptung:

Schnittstellen können keinem beliebigen Strukturtyp zugewiesen werden. Sie müssen dem richtigen Typ zugeordnet werden, den die Schnittstelle darstellt. In diesem Fall kann die Schnittstelle nur dann einer Datenstruktur zugeordnet werden, wenn ihr zuerst ein Wert dieses Typs zugewiesen wurde.

Direktes Unmarshaling:

Um die Notwendigkeit von Schnittstellenzusicherungen zu vermeiden, ist dies der Fall Es wird empfohlen, die JSON-Daten direkt in den gewünschten Strukturtyp zu entmarshalieren. Dadurch wird sichergestellt, dass die Daten ordnungsgemäß konvertiert werden, ohne dass Zwischenzusicherungen erforderlich sind.

Codebeispiel:

type Data struct {
    Content string
    Links   []string
}

func main() {
    var AData Data

    // Deserialize JSON directly into the Data struct
    err = json.Unmarshal([]byte(value), &AData)
    if err != nil {
        panic(err)
    }
}

Durch direktes Unmarshaling der JSON-Daten in die AData-Struktur, Die Notwendigkeit von Schnittstellenzusicherungen entfällt und gewährleistet eine ordnungsgemäße Datenkonvertierung.

Das obige ist der detaillierte Inhalt vonWarum löst meine JSON-Deserialisierung einen Schnittstellen-Assertionsfehler aus?. 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