„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Nachfolgend Commas in JSON: Warum stellt Go \ 's Composite Literal Syntax mit JSON Parsing in Konflikt?

Nachfolgend Commas in JSON: Warum stellt Go \ 's Composite Literal Syntax mit JSON Parsing in Konflikt?

Gepostet am 2025-03-23
Durchsuche:348

  Trailing Commas in JSON: Why Does Go\'s Composite Literal Syntax Conflict with JSON Parsing?

Trailing Comma -Syntax -Fehler in JSON -Parsen mit Go

Dave Cheney, ein renommierter Experte für Go, betont die Anforderung für Nachverfolgung in zusammengesetzten Liter -Deklarationen. Diese Regel scheint jedoch mit JSON Parsing zu stehen. Geben Sie JsonObject Struct {ein Objekte [] ObjectType `JSON:" Objekte "` } Type ObjectType struct { Name Zeichenfolge `JSON:" Name "` } func main () { Bytes: = [] byte (`{" Objekte ": [ {"Name": "foo"}, // Entfernen Sie das Komma, damit der Code funktioniert! ]} `) JSONTYPE: = & JSONObject {} JSON.unmarshal (Bytes & JSONTYPE) fmt.printf ("Ergebnisse: %v \ n", jsonType.objects [0] .Name) // Panik: Laufzeitfehler: Index außerhalb des Bereichs }

das nachfolgende Komma entfernen den Laufzeitfehler. Unterstützt es eine Lösung für diese Inkonsistenz?

// package, imports omitted for brevity

type jsonobject struct {
    Objects []ObjectType `json:"objects"`
}

type ObjectType struct {
    Name string `json:"name"`
}

func main() {
    bytes := []byte(`{ "objects": 
        [ 
            {"name": "foo"}, // REMOVE THE COMMA TO MAKE THE CODE WORK!
        ]}`)
    jsontype := &jsonobject{}
    json.Unmarshal(bytes, &jsontype)
    fmt.Printf("Results: %v\n", jsontype.Objects[0].Name) // panic: runtime error: index out of range
}
Leider gibt es keine Lösung. Die JSON -Spezifikation erlaubt keine nachfolgenden Kommas. Während Go -Syntax -Mandate nach dem Nachverfolgung von Kommas in zusammengesetzten Literalen gilt, gilt diese Anforderung nicht für JSON -Parsen. [ {"Name": "foo"}, ]}

Trotz des Potenzials eines bestimmten JSON -Parsers, das nachfolgende Komma zu ignorieren, sollte diese Praxis vermieden werden, da es bei der Verwendung anderer gültiger JSON -Parsers zu Fehlern führen kann.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3