我正在生成 JSON 以将包含方向包含到 HTML 文件中,因此 JSON 被包装在 Javascript 字符串中。
例如
var dataContacts =
'{"Contacts":[{"Id":0,"Active":false,"Company":"Rory The Architect\\, Melt"}]}';
var contacts = $.parseJSON(dataContacts).Contacts;
此代码在 javascript 中失败,因为它应该是
var dataContacts =
'{"Contacts":[{"Id":0,"Active":false,"Company":"Rory The Architect\\\\, Melt"}]}';
var contacts = $.parseJSON(dataContacts).Contacts;
我已经使用了 .NET Serializer 和 NewtonSoft.Json 并且都不支持将 \ 转换为 \\\\,他们确实将 \ 转换为 \\ 这对于 JSON 的 AJAX 交付来说很好,但不适用于 JSON嵌入到 Javascript 字符串中
我想我可能需要做一些 myJson.Replace("\", "\\");
我已经查看了为什么在输出中需要 \\ ,请在此处查看此链接:
为什么 jQuery JSON 解析器需要对反斜杠进行双重转义?
第一个转义在 Javascript 字符串文字中对其进行转义。第二个转义在 JSON 字符串文字中对其进行转义。
Javascript 表达式 '{"a":"b:\c"}' 计算为字符串 '{"a":"b:\c"}'。此字符串包含一个未转义的 \,对于 JSON,必须对其进行转义。为了得到一个包含 \ 的字符串,每个 \ 必须在 Javascript 表达式中进行转义,从而产生“\\”。
我想知道解决这个问题的最佳途径,以及为什么 NewtonSoft 或 .NET 序列化程序都不支持将 JSON 编码为直接包含到 Javascript 文件中