Uma matriz pode ser JSON-Text de nível superior?
Pergunta
De acordo com o debate neste post: JSON Conversão em Javascript
Solução
Sim, uma matriz é legal como JSON-Text de nível superior.
Existem três documentos padrão que definem o JSON: RFC 4627, RFC 7159 (que obsoleta RFC 4627) e ECMA-404. Eles diferem nos quais elementos de nível superior permitem, mas todos permitem um objeto ou uma matriz como o elemento de nível superior.
- RFC 4627: Objeto ou matriz.
"Um texto JSON é um objeto ou matriz serializada." - RFC 7159: Qualquer valor JSON.
"Um texto JSON é um valor serializado." - ECMA-404: Qualquer valor JSON.
"Um texto JSON é uma sequência de tokens formados a partir de pontos de código Unicode que estão em conformidade com a gramática JSON Value".
Outras dicas
Sim, mas você deve considerar fazer da raiz um objeto em alguns cenários, devido a JSON Hijacking. Esta é uma vulnerabilidade de divulgação de informações com base na substituição do construtor da matriz no JavaScript.
Isto é da especificação do ECMAScript.
JSONText : JSONValue JSONValue : JSONNullLiteral JSONBooleanLiteral JSONObject JSONArray JSONString JSONNumber
Há alguma confusão, vista nos outros comentários. O tipo de mídia "Application/Json" permite apenas objeto ou matriz no nível superior para o JSON-Text, por JSON RFC. No entanto, para um analisador, qualquer valor JSON é aceitável, como visto na especificação do ECMAScript.