Nachgestellte Kommas in JSON: Warum kollidiert die zusammengesetzte Literalsyntax von Go mit der JSON-Analyse?

DDD
Freigeben: 2024-10-28 20:17:31
Original
299 Leute haben es durchsucht

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

Syntaxfehler bei abschließendem Komma beim JSON-Parsen mit Go

Dave Cheney, ein renommierter Go-Experte, betont die Notwendigkeit von nachgestellten Kommas in zusammengesetzten wörtlichen Deklarationen. Diese Regel scheint jedoch im Widerspruch zur JSON-Analyse zu stehen.

Beachten Sie den folgenden Code:

<code class="go">// 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
}</code>
Nach dem Login kopieren

Das Entfernen des abschließenden Kommas behebt den Laufzeitfehler. Unterstützt Go eine Lösung für diese Inkonsistenz?

Lösung

Leider gibt es keine Lösung. Die JSON-Spezifikation erlaubt keine abschließenden Kommas. Während die Go-Syntax nachgestellte Kommas in zusammengesetzten Literalen vorschreibt, gilt diese Anforderung nicht für die JSON-Analyse.

Mit anderen Worten, das folgende JSON ist ungültig:

<code class="json">{ "objects": 
    [ 
        {"name": "foo"},
]}</code>
Nach dem Login kopieren

Trotz des Potenzials für eine bestimmte Wenn der JSON-Parser das abschließende Komma ignoriert, sollte diese Vorgehensweise vermieden werden, da sie bei der Verwendung anderer gültiger JSON-Parser zu Fehlern führen kann.

Das obige ist der detaillierte Inhalt vonNachgestellte Kommas in JSON: Warum kollidiert die zusammengesetzte Literalsyntax von Go mit der JSON-Analyse?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!