Saltar al contenido

Cómo escapar de caracteres especiales en la construcción de un JSON string?

Te damos la bienvenida a proyecto online, ahora vas a hallar la solucíon a lo que estás buscando.

Solución:

Estoy horrorizado por la presencia de información errónea altamente votada sobre una pregunta tan vista sobre un tema básico.

cadenas JSON no se puede citar con comillas simples. Las diversas versiones de la especificación (la original de Douglas Crockford, la versión ECMA y la versión IETF) establecen que las cadenas deben citarse con comillas dobles. Este no es un problema 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 comilla simple string.

La versión de Crockford y ECMA incluso muestra la definición de un string usando una imagen bonita, que debería dejar el punto claro sin ambigüedades:

Imagen que muestra la definición de un string de la especificación JSON

La imagen bonita también enumera todas las secuencias de escape legítimas dentro de un JSON string:

  • "
  • \
  • /
  • b
  • f
  • n
  • r
  • t
  • u seguido de cuatro dígitos hexadecimales

Tenga en cuenta que, contrariamente a las tonterías en algunas otras respuestas aquí, ' nunca es una secuencia de escape válida en un JSON string. No es necesario que lo sea, porque las cadenas JSON siempre están entre comillas dobles.

Finalmente, normalmente no deberías tener que pensar en escapar de los personajes cuando programáticamente generando JSON (aunque, por supuesto, lo hará cuando edite manualmente, digamos, un archivo de configuración basado en JSON). En su lugar, forme la estructura de datos que desea codificar utilizando cualquier mapa nativo, array, stringnúmero, booleano y null tipos que tiene su idioma y luego codificarlo en JSON con una función de codificación JSON. Tal función probablemente esté integrada en cualquier idioma que esté usando, como JavaScript JSON.stringifyPHP json_encodeo de Python json.dumps. Si está utilizando un lenguaje que no tiene dicha funcionalidad integrada, probablemente pueda encontrar una biblioteca de codificación y análisis de JSON para usar. Si simplemente usa funciones de lenguaje o biblioteca para convertir cosas hacia y desde JSON, ni siquiera necesitará conocer las reglas de escape de JSON. Esto es lo que debería haber hecho el autor de la pregunta equivocada.

UN JSON string debe estar entre comillas dobles, de acuerdo con las especificaciones, por lo que no necesita escapar '.
Si tiene que usar un carácter especial en su JSON stringpuedes escapar usando personaje.

Consulte esta lista de caracteres especiales utilizados en JSON:

b  Backspace (ascii code 08)
f  Form feed (ascii code 0C)
n  New line
r  Carriage return
t  Tab
"  Double quote
\  Backslash character

Sin embargo, incluso si es totalmente contrario a la especificación, el autor podría usar '.

Este es malo porque :

  • ES contrario a las especificaciones
  • Ya no es JSON válido string

Pero funciona, lo quieras o no.

Para los nuevos lectores, siempre use comillas dobles para sus cadenas json.

Todo el mundo está hablando de cómo escapar. ' en un '-citado string literal. Hay un problema mucho más grande aquí: entre comillas simples string los literales no son JSON válidos. JSON se basa en JavaScript, pero no es lo mismo. Si está escribiendo un objeto literal dentro del código JavaScript, está bien; si realmente necesita JSON, debe usar ".

Con cadenas entre comillas dobles, no necesitará escapar del '. (Y si quisieras un literal " en el stringusarías ".)

Si conservas alguna sospecha y capacidad de afinar nuestro tutorial eres capaz de dejar una reseña y con placer lo interpretaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *