我正在使用JavaScriptSerializer
类对Json进行serilize和Deserilize。
我know
有一个json.net
库。
但我的问题是:
我还可以使用JavaScriptSerializer
类来逃避我的json字符串吗?
encodeURIComponent
吗?
答案 0 :(得分:5)
是的,这是安全编码字符串的合适方式。只需在你的字符串上调用序列化。
更清楚一点,如果你查看实际的JavaScriptSerializer实现(我使用的是dotpeek),你会发现它实际上调用了这个函数:
private static void SerializeString(string input, StringBuilder sb)
{
sb.Append('"');
sb.Append(HttpUtility.JavaScriptStringEncode(input));
sb.Append('"');
}
所以我想另一个答案是你可以使用HttpUtility.JavaScriptStringEncode
,虽然它不会在它周围添加双引号。
答案 1 :(得分:0)
你的问题的答案取决于你如何使用json。
如果您通过ajax调用发送出去,那么您可能不需要对该字符串执行任何操作。
如果您将生成的json嵌入到代码隐藏的javascript变量中,那么您只需要最少的转义以确保js格式正确。这就是我们用于此目的:
sJsonString = sJsonString.Replace("\r\n", "\\r\\n")
(对不起,那是VB代码,可能需要对C#进行一些调整)
我认为这可能是合适的C#代码:
sJsonString = sJsonString.Replace("\\r\\n", "\\\\r\\\\n");