Json使用JavaScriptSerializer类逃脱?

时间:2011-12-09 18:46:30

标签: c# json javascriptserializer

我正在使用JavaScriptSerializer类对Json进行serilize和Deserilize。

know有一个json.net库。

但我的问题是:

我还可以使用JavaScriptSerializer类来逃避我的json字符串吗?

或者我应该自己做吗?如果是这样,我应该encodeURIComponent吗?

2 个答案:

答案 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");