¿Las claves JSON deben estar entre comillas?

Resuelto christianvuerings asked hace 15 años • 8 respuestas

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.

christianvuerings avatar Jun 04 '09 16:06 christianvuerings
Aceptado

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"}.

cobbal avatar Jun 04 '2009 09:06 cobbal

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í .

PatrikAkerstrand avatar Jun 04 '2009 09:06 PatrikAkerstrand

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 ( json5paquete npm ) proporciona un JSON5objeto que tiene parsemétodos stringifycon 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

Inigo avatar May 04 '2020 19:05 Inigo

Sí, las cotizaciones son obligatorias. http://json.org/ dice:

string
    ""
    " chars "
 avatar Jun 04 '2009 09:06

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,
  ]
}
cwtuan avatar May 14 '2023 06:05 cwtuan