Creo que la respuesta correcta a la pregunta de Cheeso es que la implementación superó la documentación. Ya no requiere una cadena como clave, sino otra cosa, que puede ser una cadena (es decir, citada) o (probablemente) cualquier cosa que se pueda usar como nombre de variable, lo que supongo significa comenzar con una letra, _ , o $, e incluyen solo letras, números y $ y _.
Quería simplificar el resto para la siguiente persona que visita esta pregunta con la misma idea que yo. Aquí está la carne:
nombres de las variables no son interpolados en JSON cuando se utiliza como un objeto clave (! Gracias Friedo)
Bretón, el uso de "identificador" en lugar de "clave", escribió que "si un identificador pasa a ser una palabra reservada, se interpreta como esa palabra en lugar de como un identificador."Esto puede ser cierto, pero lo intentó sin ningún problema:
var a = {do:1,long:2,super:3,abstract:4,var:5,break:6,boolean:7};
a.break
=> 6
Sobre el uso de citas, Quentin escribió" ... pero no tiene que, a menos que [la tecla ] contiene ciertos caracteres (o combinaciones de caracteres que harían una palabra clave)"
me encontré con la parte anterior (ciertos caracteres) es verdadera, utilizando el signo @ (de hecho, creo que $ y _ son la solo caracteres que no causan el error):
var a = {[email protected]:1};
=> Error de sintaxis
var a = {"[email protected]":1};
a['[email protected]']
=> 1
pero el paréntesis sobre las palabras clave, como he mostrado anteriormente, no es cierto.
Lo que quería funciona porque el texto entre la apertura {y los dos puntos, o entre la coma y los dos puntos para las propiedades siguientes se usa como una cadena sin comillas para crear una clave de objeto o, como Friedo lo expresó, una variable nombre que no se pone interpoladas:
var uid = getUID();
var token = getToken(); // Returns ABC123
var data = {uid:uid,token:token};
data.token
=> ABC123
¿Qué quiere decir por "en JSON"? Hace que "JSON" se vea como un lenguaje de programación. –
@ Bruno: Se podría hablar de XML de la misma manera ... y, por desgracia, algunos pueden estar tratando de usar XML como lenguaje de programación ... –
+1 ... parece una contradicción peculiar ... .. "con comillas" lo convierte en JSON estándar, pero no funcionará con 'eval()' (es decir, javascript). – skaffman