Puede ser una matriz de nivel superior JSON-texto?
Pregunta
por el debate en este post: JSON-conversión-in-javascript
Solución
Sí, una matriz es legal como de nivel superior JSON-texto.
Hay tres documentos estándar que definen JSON: RFC 4627 , RFC 7159 (que obsoletes RFC 4627), y ECMA-404 . Se diferencian en que los elementos de nivel superior que permiten, pero todos permiten un objeto o una matriz como el elemento de nivel superior.
- RFC 4627:. Objeto o matriz
"Un texto JSON es un objeto serializado o matriz" - RFC 7159:. Cualquier valor JSON
"Un texto JSON es un valor serializado" - ECMA-404: Cualquier valor JSON
"Texto A JSON es una secuencia de tokens formadas a partir de puntos de código Unicode que se ajusta al valor JSON. gramática ".
Otros consejos
Sí , pero se debe considerar la posibilidad de la raíz de un objeto en su lugar, en algunos casos, debido a la JSON secuestro . Esta es una vulnerabilidad de divulgación de la información basada en anulando el constructor de matriz en JavaScript.
Esto es de la especificación ECMAScript.
JSONText : JSONValue JSONValue : JSONNullLiteral JSONBooleanLiteral JSONObject JSONArray JSONString JSONNumber
Hay una cierta confusión, visto en los otros comentarios. El tipo "/ json aplicación" medios de comunicación permite que sólo objeto o matriz en el nivel superior para JSON-texto, por JSON RFC . Sin embargo, para un analizador de cualquier valor JSON es aceptable, como se ve en la especificación ECMAScript.