JSON-Nachkommastellen: Ein Laufzeiträtsel in Go
Dave Cheneys Prinzip der nachgestellten Kommas in zusammengesetzten Literalen erstreckt sich auf die JSON-Analyse. Beim Umgang mit JSON-Daten mit nachgestellten Kommas stoßen kluge Go-Programmierer jedoch auf einen Laufzeitfehler. In diesem Artikel werden die zugrunde liegenden Gründe für dieses Verhalten untersucht.
Im Gegensatz zu den zusammengesetzten Literalen von Go, die nachgestellte Kommas gemäß der Semikolon-Regel erfordern, verbietet die JSON-Syntax nachgestellte Kommas strikt. Der folgende Code veranschaulicht das Problem:
<code class="go">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>
Dieser Code führt zu einer Panik mit einem „Laufzeitfehler: Index außerhalb des Bereichs“, wenn versucht wird, auf das erste Element des Objektsegments zuzugreifen. Der Grund für diesen Fehler liegt darin, dass der JSON-Parser erwartet, dass das JSON wohlgeformt ist, und das nachgestellte Komma im obigen Beispiel es ungültig macht.
Gemäß der JSON-Spezifikation sind nachgestellte Kommas in JSON nicht zulässig Arrays oder Karten. Selbst wenn die Syntax von Go dies zulässt, interpretieren JSON-Parser sie daher als Fehler. Dieses Verhalten ist wichtig, um die Interoperabilität aufrechtzuerhalten und Inkonsistenzen zwischen verschiedenen JSON-Parsern zu verhindern.
Zusammenfassend lässt sich sagen, dass es beim Parsen von JSON mit nachgestellten Kommas in Go unbedingt erforderlich ist, die JSON-Spezifikation einzuhalten und diese zu entfernen. Der Versuch, den Parser zu zwingen, abschließende Kommas zu akzeptieren, ist nicht ratsam und kann zu unerwarteten Fehlern oder Kompatibilitätsproblemen führen.
Das obige ist der detaillierte Inhalt vonWarum verursachen nachgestellte Kommas in JSON Laufzeitfehler in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!