我正在使用 System.Web.Script.Serialization.JavaScriptSerializer() 将字典对象序列化为 JSON 字符串。我需要将此 JSON 字符串发送到云端的 API。但是,当我们序列化它时,序列化程序会将所有双引号替换为 \"
例如 -
理想的 json_string = {"k":"json", "data":"yeehaw"}
序列化器弄乱了 json_string = {\"k\":\"json\",\"data\":\"yeehaw\" }
知道为什么这样做吗?我还使用了 json.net 等外部包,但它仍然无法解决问题。
Code -
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 使用转义字符串表示法将其显示给您。这contents然而,该字符串是您的“理想”字符串。它出于多种原因使用转义版本:
- 以便您可以正确查看和识别非文本字符,例如制表符、回车符、换行符等
- 以便可以在水平视图中显示包含大量换行符的字符串
- 这样就可以清楚地知道它是一个字符串,即
"foo with \" a quote in"
(外部引号告诉您它是一个字符串;如果内部引号没有转义,则会令人困惑)
- 这样您就可以将值复制/粘贴到编辑器或即时窗口(等)中,而无需自己添加转义
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)