Heim >Backend-Entwicklung >Golang >Warum gerät mein Go-Code beim Parsen eines JSON-Arrays mit einem abschließenden Komma in Panik und es kommt zu einem Laufzeitfehler?
Dave Cheney, ein renommierter Go-Experte, betont, wie wichtig es ist, jede Zeile eines zusammengesetzten Literals mit zu beenden ein Komma. Diese Regel scheint jedoch im Widerspruch zum JSON-Parsing in Go zu stehen.
Bedenken Sie den folgenden Code:
<code class="go">package main import ( "fmt" "encoding/json" ) 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>
In diesem Code funktioniert das Entfernen des abschließenden Kommas aus dem JSON-Array. Gibt es jedoch keine Möglichkeit, diese Inkonsistenz zu vermeiden?
Leider nein. Die JSON-Spezifikation verbietet nachgestellte Kommas. Es ist eine gültige Go-Syntax, einer geöffneten Aufzählung, die in einer anderen Zeile fortgesetzt wird, ein abschließendes Komma hinzuzufügen. Dies gilt jedoch nicht für JSON.
Hier ist ein Beispiel für eine ungültige JSON-Struktur:
{ "objects": [ {"name": "foo"}, ]}
Auch wenn es möglich wäre, einen bestimmten JSON-Parser davon zu überzeugen, dieses Format zu akzeptieren, andere Gültige JSON-Parser würden zu Recht einen Fehler melden. Daher wird empfohlen, sich an die JSON-Spezifikation zu halten und nachgestellte Kommas zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum gerät mein Go-Code beim Parsen eines JSON-Arrays mit einem abschließenden Komma in Panik und es kommt zu einem Laufzeitfehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!