2010-06-28 18 views
6

Quiero limpiar cadenas que se recuperan de una base de datos.Limpieza de cadenas para que sean valores JSON válidos

Me encontré con este problema cuando el valor de una propiedad (un nombre de una base de datos) tenía un caracter TAB incrustado, y Chrome me dio un error TOKEN no válido al intentar cargar el objeto JSON.

Así que ahora, fui a http://www.json.org/ y en el lado tiene una especificación. Pero estoy teniendo problemas para entender cómo escribir un limpiador usando esta especificación:

cadena

  • ""
  • " caracteres"

caracteres

  • carbonilla
  • carbonillacaracteres

carbonilla

  • cualquier Unicode-caracte- salvo - "- o - o- control de caracteres
  • \ "
  • \\
  • /
  • \ b
  • \ f
  • \ n
  • \ r
  • \ t
  • \ u cuatro-hex-dígitos

Dado una cuerda, ¿cómo puedo "limpiarla" para que se ajuste a esta especificación?

Específicamente, estoy confundido: ¿la especificación permite caracteres TAB (0x0900)? De ser así, ¿por qué Chrome recibió un error de TOKEN no válido?

Respuesta

13

caracteres de tabulador (real 0x09, no escapa a) no puede aparecer dentro de las citas en JSON (aunque son espacios en blanco válida fuera de las comillas). Tendrá que escapar de ellos con \t o \u0009 (el primero es preferible).

json.org dice un carácter literal de una cadena debe ser:.

cualquier carácter Unicode excepto "o \ o de control de carácter

conteos Tab como un carácter de control

Cuestiones relacionadas