我使用JavaScriptSerializer
该类对 Json 进行序列化和反序列化。
我know
那里有一个json.net
图书馆。
但我的问题是:
我也可以使用JavaScriptSerializer
类来转义我的 json 字符串吗?
还是我应该自己做?如果是这样,我应该这样做encodeURIComponent
吗?
我使用JavaScriptSerializer
该类对 Json 进行序列化和反序列化。
我know
那里有一个json.net
图书馆。
但我的问题是:
我也可以使用JavaScriptSerializer
类来转义我的 json 字符串吗?
还是我应该自己做?如果是这样,我应该这样做encodeURIComponent
吗?
是的,这是对字符串进行安全编码的适当方式。只需在您的字符串上调用序列化。
更清楚地说,如果您查看实际的 JavaScriptSerializer 实现(我使用的是 dotpeek),您可以看到它实际上调用了这个函数:
private static void SerializeString(string input, StringBuilder sb)
{
sb.Append('"');
sb.Append(HttpUtility.JavaScriptStringEncode(input));
sb.Append('"');
}
所以我想另一个答案是你可以使用HttpUtility.JavaScriptStringEncode
,尽管它不会在它周围添加双引号。
您的问题的答案取决于您如何使用 json。
如果您通过 ajax 调用发送,那么您可能不需要对字符串执行任何操作。
如果您将生成的 json 嵌入代码隐藏的 javascript 变量中,那么您只需要最少的转义即可确保 js 格式正确。这就是我们使用的:
sJsonString = sJsonString.Replace("\r\n", "\\r\\n")
(抱歉,那是VB代码,可能需要针对C#做一些调整)
我认为这可能是适当的 C# 代码:
sJsonString = sJsonString.Replace("\\r\\n", "\\\\r\\\\n");