¿La publicación de ECMA-404 afectó la validez de los textos JSON como ‘2’ o ” hola ”?

¿Son los siguientes textos JSON válidos o su valor de nivel superior debe ser una matriz u objeto?

4.0 
 "Hello World" 
 true 

Preguntas relacionadas en el pasado, como ¿Cuál es el mínimo JSON válido? , ¿Es esta cadena simple considerada JSON válida? han llegado a la conclusión de que no lo son. Esto se basó en la descripción del formato JSON en RFC-4627 , que establece que:

2. Gramática JSON

Un texto JSON es una secuencia de tokens. El conjunto de tokens incluye seis caracteres estructurales, cadenas, números y tres nombres literales.

Un texto JSON es un objeto serializado o matriz.

  JSON-text = object / array 

Estos son los seis personajes estructurales:

[…]

Sin embargo, el estado RFC-4627 declara que “no especifica un estándar de Internet de ningún tipo”. En cambio, el estándar oficial para JSON es el recientemente publicado ECMA-404 . A diferencia de RFC-4627, la descripción del texto JSON válido de ECMA-404 no incluye ningún requisito de que sea un objeto o una matriz. Por ejemplo, la sección más similar a la cita anterior no incluye ese requisito:

4 Texto JSON

Un texto JSON es una secuencia de tokens formados a partir de puntos de código Unicode que se ajusta a la gramática de valores JSON. El conjunto de tokens incluye seis tokens estructurales, cadenas, números y tres tokens de nombres literales.

Los seis tokens estructurales:

[…]

Dada esta nueva especificación, ¿los valores codificados de alto nivel que no son de matriz no objeto se consideran textos JSON válidos?

Douglas Crockford publicó un comentario en esta publicación de Google+ que me ayudó a comenzar a aclarar las cosas:

JSON es solo una gramática, y la gramática incluye números y cadenas. Los usos de JSON deben ser necesariamente más restrictivos. RFC-4627 es un uso posible, y nunca fue la intención de ser el estándar para JSON.

No podemos decir que los textos JSON que no son de matriz no son generalmente inválidos, solo que no es válido usarlos con la application/json tipo de medios de Internet application/json , según RFC-4627.

Las representaciones de valores que no son de matriz no objeto son textos JSON válidos por ECMA-404, que es el único estándar actualmente publicado que podría identificarse como “la especificación JSON”.

Sin embargo, resulta que el IETF probablemente pronto publique un reemplazo para RFC-4627 que también será una especificación de JSON. Su último borrador aún incluye la restricción en los textos JSON, pero también menciona que JSON se ha especificado en varios lugares y que estas especificaciones varían ligeramente. El borrador menciona específicamente que la definición de JSON en ECMA-262 (la especificación ECMAScript / JavaScript) no comparte la restricción de valor de nivel superior.

Por lo tanto, la cuestión de si los no-objetos no-matrices son textos JSON válidos debe ser desambiguado:

¿Es "hello" un texto JSON válido como se especifica en RFC-4627 y su sucesor?

No.

¿Es "hello" un texto JSON válido según lo especificado por ECMA-404 y ECMA-262?

Sí.