2010-06-28 47 views
6

我想清理从数据库中检索的字符串。清理字符串是有效的JSON值

我就遇到了这个问题,其中一个属性值(从数据库中的名称)有一个嵌入的制表符,和Chrome给了我一个无效的标记错误尝试加载JSON对象。

所以现在,我去http://www.json.org/和上侧有一个规范。但我无法理解如何使用这个规范写洗面奶:

  • “”
  • 字符

字符

  • 字符

  • 除了任何-Unicode的character- - “ - 或 - 或 - 控制字符
  • \”
  • \\
  • /
  • \ b
  • \˚F
  • \ n
  • \ r
  • \吨
  • \Ú四己数字

鉴于一个字符串,我该如何“清理”它才能符合这个规范?

具体来说,我很困惑:不规范允许TAB(0x0900)字?如果是这样,Chrome为什么会给出无效的TOKEN错误?

回答

13

Tab字符(实际0x09,不逃逸)不能引号内的JSON出现(尽管它们在引号外面有效的空格)。你需要用\t\u0009(前者更可取)将它们转义出来。

JSON。组织说,一个字符串的转义字符必须是:

除“或\ 控制字符

标签被视为一个控制字符任何Unicode字符