c# - .Net 4.0 JSON 序列化 : Double quotes are changed to\"

标签 c# asp.net .net json serialization

我正在使用 System.Web.Script.Serialization.JavaScriptSerializer() 将字典对象序列化为 JSON 字符串。我需要将这个 JSON 字符串发送到云端的 API。但是,当我们对其进行序列化时,序列化程序会将所有双引号替换为\"

例如——

理想的 json_string = {"k":"json", "data":"yeehaw"}

序列化器搞砸了 json_string = {\"k\":\"json\",\"data\":\"yeehaw\"}

知道为什么要这样做吗?我还使用了外部包,如 json.net,但它仍然没有解决问题。

代码-

Dictionary<string, string> json_value = new Dictionary<string, string>();
json_value.Add("k", "json");
json_value.Add("data", "yeehaw");
var jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
string json_string = jsonSerializer.Serialize(json_value);

最佳答案

我敢猜测您正在 IDE 中查看断点。这样的话,这里就没有问题了。您看到的是完全有效的 JSON;只是 IDE 使用转义字符串表示法将其显示给您。但是,字符串的内容 是您的“理想”字符串。它出于各种原因使用转义版本:

  • 以便您可以正确查看和识别非文本字符,例如制表符、回车符、换行符等
  • 这样带有很多换行符的字符串可以在水平 View 中显示
  • 这样可以清楚地知道它是一个字符串,即 "foo with\"a quote in"(外引号告诉你它是一个字符串;如果内引号不是'逃脱它会令人困惑)
  • 这样您就可以将值复制/粘贴到编辑器或即时窗口(等)中,而无需自己添加转义

关于c# - .Net 4.0 JSON 序列化 : Double quotes are changed to\",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9462425/

相关文章:

ASP.NET MVC 4 - CMS/CMS 组件(如 Wordpress)

c# - 如何获取 HttpWebRequest 的本地端口号?

.net - 一个好的 gradle nunit 插件?

c# - 等价于 C# 中的 typedef

c# - 获取 claim 电子邮件地址

c# - 由 ASP.net 提供支持的 PHP 网站上的页面很少

c# - 获取 PowerShell 脚本以在 Azure 上运行 SharePoint 命令

c# - 最快的二维数据空间索引,一旦构建就无需更新

c# - 如何移除树节点并将其节点节点向上移动?

javascript - NavigateUrl 和 EVAL