将字符串清理为有效的JSON值

时间:2010-06-28 14:30:43

标签: c# json

我想清理从数据库中检索的字符串。

我遇到了这个问题,其中一个属性值(来自数据库的名称)有一个嵌入的TAB字符,Chrome在尝试加载JSON对象时给了我一个无效的TOKEN错误。

所以现在,我去了http://www.json.org/,并且它有一个规范。但我无法理解如何使用此规范编写清洁剂:

字符串

  • “”
  • chars

字符

  • char chars

  • 任何-Unicode的character- 除非 - “ - 或 - 或 - 控制字符
  • \“
  • \\
  • /
  • \ B'/ LI>
  • \ f
  • \ n
  • \ r
  • \吨
  • \ u four-hex-digits

给定一个字符串,我如何“清理”它以便符合此规范?

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

2 个答案:

答案 0 :(得分:13)

制表符(实际0x09,而不是转义)不能出现在JSON中的引号内(尽管它们是引号之外的有效空格)。您需要使用\t\u0009(前者更可取)来逃避它们。

json.org说字符串的未转义字符必须是:

  

除“或\或”之外的任何UNICODE字符   控制角色

选项卡计为控制角色。

答案 1 :(得分:2)

这可能就是你要找的内容,它展示了如何在C#中使用JavaScriptSerializer类。

How to create JSON String in C#