Kann ein Array Top-Level-JSON-Text sein?
Frage
pro Debatte in diesem Beitrag: json-Umwandlung-in-javascript
Lösung
Ja, ein Array ist legal als Top-Level-JSON-Text.
Es gibt drei Standarddokumente JSON definieren: RFC 4627 , RFC 7159 (die RFC 4627 obsolete) und ECMA-404 . Sie unterscheiden sich in dem Top-Level-Elemente, die sie ermöglichen, aber alle ermöglichen, ein Objekt oder ein Array als Element der obersten Ebene.
- RFC 4627:. Objekt oder Array
"Ein JSON Text ist ein serialisierte Objekt oder Array" - RFC 7159:. All JSON-Wert
"Ein JSON Text ist ein serialisierte Wert" - ECMA-404: All JSON-Wert
"Ein JSON Text ist eine Folge von Token von Unicode-Codepunkten gebildet, dass entspricht den JSON-Wert. Grammatik ".
Andere Tipps
Ja , aber Sie sollten ein Objekt stattdessen in einigen Szenarien aufgrund JSON-Hijacking . Dies ist eine Verwundbarkeit der Offenlegung von Informationen basierend auf Überschreiben den Array-Konstruktor in JavaScript.
Dies ist aus der ECMAScript-Spezifikation.
JSONText : JSONValue JSONValue : JSONNullLiteral JSONBooleanLiteral JSONObject JSONArray JSONString JSONNumber
Es gibt einige Verwirrung in den anderen Kommentaren gesehen. Die "application / json" Medientyp erlaubt nur Objekt oder Array auf der obersten Ebene für JSON-Text, per JSON RFC . Jedoch für einen Parser jeden JSON Wert akzeptabel ist, wie in der Spezifikation ECMAScript gesehen.