за дебаты в этом сообщении: json-conversion-in-javascript
Может ли массив быть JSON-текстом верхнего уровня?
Ответ 1
Да, массив является законным как JSON-текст верхнего уровня.
Существует три стандартных документа, определяющих JSON: RFC 4627, RFC 7159 (который устарел RFC 4627) и ECMA-404. Они отличаются тем, какие элементы верхнего уровня они позволяют, но все позволяют объекту или массиву как элемент верхнего уровня.
- RFC 4627: объект или массив.
" Текст JSON - это сериализованный объект или массив". - RFC 7159: любое значение JSON.
" Текст JSON - это сериализованное значение". - ECMA-404: любое значение JSON.
" Текст JSON - это последовательность токенов, сформированных из кодовых точек Unicode, которые соответствуют значению JSON грамматика ".
Ответ 2
Да, но вы должны подумать о том, чтобы сделать корневой объект вместо этого в некоторых сценариях, из-за JSON hijacking. Это уязвимость раскрытия информации, основанная на переопределении конструктора массива в JavaScript.
Ответ 3
Это из спецификации ECMAScript.
JSONText : JSONValue JSONValue : JSONNullLiteral JSONBooleanLiteral JSONObject JSONArray JSONString JSONNumber
Ответ 4
да, попробуйте здесь.
и введите [{}]
Ответ 5
Существует некоторая путаница, замеченная в других комментариях. Медиа-тип "application/json" позволяет использовать только объект или массив на верхнем уровне для JSON-текста, за JSON RFC. Однако для анализатора допустимо любое значение JSON, как показано в спецификации ECMAScript.