2011-12-15 19 views
28

debate candente en la actualidad:es nulo JSON válida (4 bytes, nada más)

Es la secuencia de texto null válida JSON?

Según http://www.ietf.org/rfc/rfc4627.txt?number=4627:

...
2. JSON Gramática

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

texto Un JSON es un objeto serializado o array.

¿Debería interpretarse esto como que ambas declaraciones deben ser verdaderas para que el texto sea válido JSON?

Sin embargo, muchas otras bibliotecas parecen permitir que, de hecho, parece que un único token válido podría ser un resultado legítimo.

¿Existe una respuesta definitiva?

Respuesta

20

Sí, ambas declaraciones deben ser verdaderas. El token literal null es un valor JSON . Un texto JSON es un objeto serializado o matriz, que requiere {} o [].

+0

¿Cómo puede ser entonces que la mayoría de los analizadores JSON por ahí aceptan ' 'documento como válido nula? A Ejemplos típicos son Node.JS (JSON.parse ('nulo') => nulo o echo 'null' |. Pitón -mjson.tool => nula – whaefelinger

+1

echo '7' | rendimientos pitón -mjson.tool 7, por lo que . inferir que la herramienta al parecer está dispuesto a analizar los valores aislados JSON literales, así como completa (objeto o matriz) textos JSON –

+0

analizador JSON de ruby ​​rechaza simplemente 'null' como un valor por defecto:' ruby ​​-r JSON -e 'JSON.parse ("nulo") ' 'Givens‘símbolo inesperado en 'nulo'(JSON :: ParserError)’ –

10

RFC 7159 gotas de la limitación de que un texto JSON debe ser un objeto o una matriz. La gramática especifica:

JSON-text = ws valor ws

donde

valor = false/null/verdadero/objeto/matriz/número/cadena

Por lo tanto, "nulo" ahora es un documento JSON válido.

+0

Gracias. No sabía que la especificación había cambiado. –

Cuestiones relacionadas