uso simples simple poner interpolacion escape escapar doble comillas comilla colocar cadenas javascript json browser double-quotes

javascript - simples - ¿Hay alguna razón práctica para usar cadenas entre comillas para las claves JSON?



poner doble comilla en string java (3)

La verdadera razón de por qué las claves JSON deben estar entre comillas, se basa en la semántica de los identificadores de ECMAScript 3.

Las palabras reservadas no se pueden usar como nombres de propiedades en Literales de objetos sin comillas, por ejemplo:

({function: 0}) // SyntaxError ({if: 0}) // SyntaxError ({true: 0}) // SyntaxError // etc...

Mientras que si usas comillas, los nombres de las propiedades son válidos:

({"function": 0}) // Ok ({"if": 0}) // Ok ({"true": 0}) // Ok

El propio Crockford lo explica en esta charla , querían mantener el estándar JSON simple, y no les gustaría tener todas esas restricciones semánticas sobre él:

....

Fue entonces cuando descubrimos el problema del nombre sin nombre. Resulta que ECMA Script 3 tiene una política de palabras reservadas. Las palabras reservadas deben citarse en la posición clave, lo cual es realmente una molestia. Cuando llegué a formular esto en un estándar, no quería tener que poner todas las palabras reservadas en el estándar, porque se vería realmente estúpido.

En ese momento, estaba tratando de convencer a la gente: sí, puedes escribir aplicaciones en JavaScript, en realidad va a funcionar y es un buen lenguaje. No quería decir, entonces, al mismo tiempo: ¡y mira esto realmente estúpido que hicieron! Así que decidí, en cambio, citar las llaves.
De esa forma, no tenemos que decirle a nadie sobre cómo es.

Es por eso que, hasta el día de hoy, las claves se citan en JSON.

...

El ECMAScript 5th Edition Standard corrige esto, ahora en una implementación de ES5, incluso las palabras reservadas se pueden usar sin comillas, tanto en los literales de objetos como en el acceso de los miembros ( obj.function Ok en ES5).

Solo para el registro, este estándar está siendo implementado estos días por los proveedores de software, usted puede ver qué navegadores incluyen esta característica en esta tabla de compatibilidad (vea las palabras reservadas como nombres de propiedad )

Según el json.org de Crockford, un objeto JSON está compuesto por miembros , que está formado por pares .

Cada par está hecho de una cadena y un valor , con una cadena que se define como:

Una cadena es una secuencia de cero o más caracteres Unicode, envueltos entre comillas dobles, usando escapes de barra invertida. Un personaje se representa como una cadena de caracteres individuales. Una cadena es muy similar a una cadena C o Java.

Pero en la práctica, la mayoría de los programadores ni siquiera saben que una clave JSON debe estar rodeada de comillas dobles, ya que la mayoría de los navegadores no requieren el uso de comillas dobles.

¿Tiene sentido molestarse en rodear su JSON con comillas dobles?

Ejemplo válido:

{ "keyName" : 34 }

A diferencia del inválido:

{ keyName : 34 }


Sí, es JSON no válido y, de lo contrario, será rechazado en muchos casos, por ejemplo, jQuery 1.4+ tiene una marca de verificación que hace que JSON sin comillas fracase silenciosamente. ¿Por qué no ser obediente?

Tomemos otro ejemplo:

{ myKey: "value" } { my-Key: "value" } { my-Key[]: "value" }

... todos estos serían válidos con comillas, ¿por qué no ser coherentes y utilizarlos en todos los casos, eliminando la posibilidad de un problema?

Un ejemplo más común en el mundo de los desarrolladores web: existen miles de ejemplos de HTML no válido que se muestran en la mayoría de los navegadores ... ¿eso hace que sea menos doloroso depurar o mantener? No, en absoluto, todo lo contrario.

También @ Matthew hace la mejor observación en comentarios a continuación, esto ya falla, las claves sin comillas arrojarán un error de sintaxis con JSON.parse() en todos los navegadores principales (y en cualquier otro que lo implemente correctamente), puede probarlo aquí .


YAML, que de hecho es un superconjunto de JSON, admite lo que desea hacer. A pesar de que es un superconjunto, te permite mantenerlo tan simple como lo desees.

YAML es un soplo de aire fresco y puede valer la pena verlo. El mejor lugar para comenzar es aquí: http://en.wikipedia.org/wiki/YAML

Hay libs para cada idioma bajo el sol, incluido JS, por ejemplo, https://github.com/nodeca/js-yaml