¿Las claves JSON deben estar entre comillas?
Ejemplo: ¿Es válido el siguiente código según la especificación JSON ?
{
precision: "zip"
}
¿O debería utilizar siempre la siguiente sintaxis? (Y si es así, ¿por qué?)
{
"precision": "zip"
}
Realmente no encontré nada sobre esto en las especificaciones JSON. Aunque usan comillas alrededor de sus claves en sus ejemplos.
Sí, necesitas comillas. Esto es para hacerlo más simple y evitar tener que tener otro método de escape para las palabras clave reservadas de JavaScript, es decir {for:"foo"}
.
Tiene razón al utilizar cadenas como clave. Aquí hay un extracto de RFC 4627: El tipo de medio application/json para notación de objetos JavaScript (JSON)
2.2. Objetos
Una estructura de objeto se representa como un par de llaves que rodean cero o más pares (o miembros) de nombre/valor. Un nombre es una cadena . Después de cada nombre aparecen dos puntos, separando el nombre del valor. Una sola coma separa un valor del siguiente nombre. Los nombres dentro de un objeto DEBEN ser únicos.
object = begin-object [ member *( value-separator member ) ] end-object
member = string name-separator value
[...]
2.5. Instrumentos de cuerda
La representación de cadenas es similar a las convenciones utilizadas en la familia C de lenguajes de programación. Una cadena comienza y termina entre comillas. [...]
string = quotation-mark *char quotation-mark
quotation-mark = %x22 ; "
Lea el RFC completo aquí .
No si usas JSON5
Para JSON normal, se deben citar las claves sí. Pero si necesita lo contrario, consulte JSON5, ampliamente utilizado , llamado así porque es un superconjunto de JSON que permite la sintaxis de ES5, que incluye:
- claves de propiedad sin comillas
- cadenas entre comillas simples, escapadas y de varias líneas
- formatos de números alternativos
- comentarios
- espacios en blanco adicionales
La implementación de referencia JSON5 ( json5
paquete npm ) proporciona un JSON5
objeto que tiene parse
métodos stringify
con los mismos argumentos y semántica que el objeto integrado JSON
.
Ampliamente utilizado y del que dependen muchos proyectos de alto perfil.
JSON5 se inició en 2012 y, a partir de 2022, ahora obtiene >65 millones de descargas por semana, se ubica en el 0,1% superior de los paquetes más dependientes de npm y ha sido adoptado por proyectos importantes como Chromium, Next.js, Babel. , Retool, WebStorm y más. También es compatible de forma nativa con plataformas Apple como MacOS e iOS.
~ página de inicio json5.org
Sí, las cotizaciones son obligatorias. http://json.org/ dice:
string
""
" chars "
JSON
En formato JSON , las claves deben estar entre comillas.
Ejemplo JSON:
{
"name": "John",
"age": 30
}
JSON5
JSON5 es un superconjunto de JSON que agrega algunas características adicionales al formato JSON original, incluida la capacidad de utilizar comillas simples o claves sin comillas.
Ejemplo JSON5:
{
// This is a comment
name: 'John',
'age': 30,
}
hjson
Hjson también permite que las claves no estén entre comillas, siempre que no contengan espacios u otros caracteres especiales. Hjson es esencialmente una versión más relajada y tolerante de JSON/JSON5 que permite una mayor flexibilidad en el formato y la sintaxis de los datos.
Ejemplo de Hjson:
{
// This is a comment
name: John
age: 30
city: New York
favorites: [
pizza
ice cream,
]
}