2012-06-11 13 views
0

我正在使用Dojo.fromJson将json字符串转换为javascript对象,但抛出异常。因为在json字符串中有控制字符,如',\n,\r如何使用Dojo.fromJson反序列化包含控制字符的Json对象

我该如何在道场解决这个问题?将json字符串转换为javascript对象,即使有控制字符也是如此。

我使用Newtonsoft.JsonConvert.SerializeObject将C#oject转换为json数据。 Json对象:{"name":"'\"abc\n123\r"}然后,我使用Dojo.fromJson(' {"name":"'\"abc\n123\r"}')将json数据转换为javascript对象。

非常感谢!

+0

请显示输入字符串和您使用的代码的示例。 –

+1

当生成这些json数据时,字符串内的控制字符必须被转义。你可以编写一些邪恶的解析器将这些“json”数据转换为有效的json数据。 – Prusse

+0

我使用Newtonsoft.JsonConvert.SerializeObject将C#oject转换为json数据。然后,我使用Dojo.fromJson('{“名称':'''abc \ n123 \ r”}')来转换json数据到javascript对象。 –

回答

0

问题,我认为是应该用三重反斜杠逃脱的双引号。您可以使用“本地浏览器JSON解码”作为搜索词的“dojo fromJson”同义词。

不知道我的办法解决C# - 我还没有测试,但我相信下面应该工作:

string c_sharp_name = "'\"abc\n123\r"; 
// C#Object.name 
c_sharp_name = c_sharp_name. 
    replace('"', '\\"'). // maybe add a slash on serverside 
    replace('\n', '\\\n'). 
    replace('\r', '\\\r'); 

因为

  • 而失败:
  • { “名”:“'\ “abc \ n123 \ r”} //你的单个反斜杠
  • 这会工作:
  • {“name”:“'\\\”abc \\\ n123 \\\ r“} //工作三重反斜杠转义
相关问题