2011-06-30 21 views
53

¿JSON los trata de todos modos? ¿O son una mezcla de enteros y booleanos?JSON values ​​1 o 0 - int o boolean

var data = 
{ 
    "zero" : 0, 
    "one" : 1, 
    "false" : 0, 
    "true" : 1, 
    "0" : false, 
    "1" : true 
} 
+4

¿Te refieres a los valores? Bueno, está el tipo Número, y también existe el tipo Booleano. Por lo tanto, esos valores no son lo mismo. –

+7

BTW, 'true' y' false' son palabras reservadas, por lo que no podrá usar la notación de puntos para recuperar los valores de las propiedades. Por ejemplo, 'data.zero' devuelve' 0', pero 'data.false' arroja un error de análisis (en algunos navegadores) (' data ['false'] 'funcionaría (= return' 0')). –

Respuesta

63

JSON es un formato para transferir datos.
No tiene noción de igualdad.

JSON analizadores tratan los booleanos y los números como tipos distintos.

+49

Esta respuesta podría haberse explicado más claramente, de esta manera: * "Phil, mencionas JSON, que es un formato; lo que quieres preguntar es sobre los analizadores de JSON. De hecho, los analizadores de JSON ... bla, bla". * Las personas que son Top Explainers siempre intercambian el humor, el sarcasmo leve, la franqueza ingeniosa e invertida, las sorpresas iniciales y, de hecho, cualquier tipo de artimaña estilística, en absoluto ... por un poder absoluto, total y explicativo. S., ordeno a un joven como usted a los escritos de Winston Churchill: disfrutaría de * Mi vida temprana *, que es un ejemplo de lenguaje maestro. Cheers – Fattie

+8

Esta respuesta contiene lo que necesita contener, y no es inútil. De hecho, lo hubiera acortado a * Depende del analizador el decidir *. –

+21

Qué respuesta sin sentido, e incluso está mal porque en realidad hay una [especificación JSON] oficial (http://www.json.org) que muestra que los valores literales 'verdadero' y 'falso' son distintos de los números. Cualquier analizador que no haya podido hacer esa distinción no es un analizador JSON. –

83

Los valores true y false son valores booleanos reales, el resto son enteros. Vea http://json.org/ para más.

+3

El enlace a json.org es útil aquí. Llegué a esta pregunta para ver si JSON usa comillas alrededor de los valores verdadero y falso. –

+14

Para ayudar a quienes encuentran esta publicación buscando la misma información, la respuesta es "no". No hay comillas alrededor de los valores 'true' y' false' en JSON. –

7

Como se mencionó, en el nivel JSON, 0 y falso no son lo mismo; los tipos de datos son números versus booleanos. Pero las bibliotecas de procesamiento JSON pueden elegir hacer conversiones; especialmente en idiomas/plataformas que no tienen el tipo booleano nativo, por ejemplo. En ese caso, se puede usar otra representación (cadena vacía o 0 para falso).

Además, también es posible que las bibliotecas de procesamiento puedan forzar tipos: de modo que si se espera un valor booleano, se pueden aceptar ciertos valores de número/cadena (o token 'nulo' de JSON). Esto es bastante común, debido a las diferencias en las opciones de tipos de datos en diferentes idiomas.

23

Prefiero usar 0/1 en lugar de verdadero/falso, porque 0/1 consume solo 1 byte mientras que verdadero/falso consume 4/5 bytes.