.Net 4.0 JSON序列化:双引号更改为"

Ada*_*dam 4 .net c# asp.net serialization json

我正在使用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);
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 7

我将冒险猜测你在断点处查看IDE.在这种情况下,这里没有问题.你所看到的是完全有效的JSON; 只是IDE使用转义字符串表示法向您显示它.但是,字符串的内容是您的"理想"字符串.它使用转义版本有各种原因:

  • 这样您就可以正确地查看和识别非文本字符,如制表符,回车符,换行符等
  • 这样可以在基于水平的视图中显示包含许多换行符的字符串
  • 这样就可以清楚它是一个字符串,即"foo with \" a quote in"(外部引号告诉你它是一个字符串;如果内部引用没有被转义,那将会令人困惑)
  • 这样您就可以将值复制/粘贴到编辑器或即时窗口(等)中,而无需自行添加转义