Может ли массив быть JSON-текстом верхнего уровня? - PullRequest
84 голосов
/ 30 сентября 2010

за обсуждение в этом посте: json-преобразование в JavaScript

Ответы [ 5 ]

102 голосов
/ 30 сентября 2010

Да, массив допустим как JSON-текст верхнего уровня.

Существует три стандартных документа, определяющих JSON: RFC 4627 , RFC 7159 устаревшие RFC 4627) и ECMA-404 .Они отличаются тем, какие элементы верхнего уровня они разрешают, но все допускают использование объекта или массива в качестве элемента верхнего уровня.

  • RFC 4627: Объект или массив. «Текст JSON представляет собой сериализованный объект или массив.»
  • RFC 7159: Любое значение JSON. «Текст JSON является сериализованным значением.»
  • ECMA-404: Любое значение JSON. «Текст JSON - это последовательность токенов, сформированная из кодовых точек Unicode, которая соответствует грамматике значения JSON.»
48 голосов
/ 30 сентября 2010

Да , но в некоторых сценариях следует рассмотреть возможность сделать корень объектом вместо этого из-за перехвата JSON .Это уязвимость раскрытия информации, основанная на переопределении конструктора массива в JavaScript.

4 голосов
/ 30 сентября 2010

Это из спецификации ECMAScript.

JSONText :
    JSONValue

JSONValue :
    JSONNullLiteral 
    JSONBooleanLiteral 
    JSONObject 
    JSONArray 
    JSONString 
    JSONNumber
1 голос
/ 22 июня 2012

Существует некоторая путаница, замеченная в других комментариях.Тип носителя "application / json" допускает только объект или массив на верхнем уровне для текста JSON, в соответствии с JSON RFC .Однако для анализатора приемлемо любое значение JSON, как видно из спецификации ECMAScript.

1 голос
/ 30 сентября 2010

да, попробуйте здесь.

http://www.jsonlint.com/

и положить в [{}]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...