我正在使用 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/