Estoy horrorizado por la presencia de información errónea muy votada sobre una pregunta tan altamente vista sobre un tema básico.
Las cadenas JSON no se pueden citar con comillas simples . Las diversas versiones de la especificación ( el original de Douglas Crockford, la versión ECMA y la versión IETF ) establecen que las cadenas deben ser citadas con comillas dobles. Este no es un tema teórico, ni una cuestión de opinión como sugiere actualmente la respuesta aceptada; cualquier analizador JSON en el mundo real generará un error si intenta que analice una cadena entre comillas simples.
La versión de Crockford y ECMA incluso muestra la definición de una cadena usando una imagen bonita, lo que debería dejar el punto claramente claro:
La imagen bonita también enumera todas las secuencias de escape legítimas dentro de una cadena JSON:
\"
\\
\/
\b
\f
\n
\r
\t
\u
seguido de cuatro dígitos hexadecimales
Tenga en cuenta que, al contrario de las tonterías en algunas otras respuestas aquí, \'
nunca es una secuencia de escape válida en una cadena JSON. No es necesario que sea así, porque las cadenas JSON siempre tienen comillas dobles.
Finalmente, normalmente no debería pensar en escapar de los caracteres usted mismo cuando genera JSON mediante programación (aunque, por supuesto, lo hará cuando edite manualmente, por ejemplo, un archivo de configuración basado en JSON). En su lugar, forme la estructura de datos que desea codificar utilizando cualquier mapa nativo, matriz, cadena, número, tipo booleano y nulo que tenga su idioma, y luego codifíquelo en JSON con una función de codificación JSON. Tal función probablemente esté integrada en el lenguaje que esté utilizando, como JavaScript JSON.stringify
, PHP json_encode
o Python.json.dumps
. Si está utilizando un lenguaje que no tiene dicha funcionalidad incorporada, probablemente pueda encontrar una biblioteca de codificación y análisis JSON para usar. Si simplemente usa las funciones de lenguaje o biblioteca para convertir cosas hacia y desde JSON, nunca necesitará saber las reglas de escape de JSON. Esto es lo que el preguntante equivocado aquí debería haber hecho.