[arrays] 배열이 최상위 JSON 텍스트 일 ​​수 있습니까?

이 게시물의 토론에 따라 : json-conversion-in-javascript



답변

예, 배열은 최상위 JSON 텍스트로 합법적입니다.

JSON을 정의하는 세 가지 표준 문서는 RFC 4627 , RFC 7159 (RFC 4627 폐기 됨) 및 ECMA-404 입니다. 허용하는 최상위 요소가 다르지만 모두 최상위 요소로 객체 또는 배열을 허용합니다.

  • RFC 4627 : 개체 또는 배열.
    “JSON 텍스트는 직렬화 된 객체 또는 배열입니다.”
  • RFC 7159 : 모든 JSON 값.
    “JSON 텍스트는 직렬화 된 값입니다.”
  • ECMA-404 : 모든 JSON 값.
    “JSON 텍스트는 JSON 값 문법을 따르는 유니 코드 코드 포인트로 구성된 일련의 토큰입니다.”

답변

,하지만 JSON 하이재킹 으로 인해 일부 시나리오에서 대신 루트를 객체로 만드는 것을 고려해야합니다 . 이것은 JavaScript의 배열 생성자 재정의를 기반으로 한 정보 유출 취약점입니다.


답변

이것은 ECMAScript 사양에서 가져온 것입니다.

JSONText :
    JSONValue

JSONValue :
    JSONNullLiteral
    JSONBooleanLiteral
    JSONObject
    JSONArray
    JSONString
    JSONNumber


답변

예, 여기에서 사용해보세요.

http://www.jsonlint.com/

그리고 [{}]에 넣어


답변

다른 의견에서 볼 수 있듯이 약간의 혼란이 있습니다. “application / json”미디어 유형은 JSON RFC에 따라 JSON 텍스트에 대해 최상위 수준의 객체 또는 배열 만 허용합니다 . 그러나 파서의 경우 ECMAScript 사양에서 볼 수 있듯이 모든 JSON 값이 허용됩니다.


답변