1

我使用JavaScriptSerializer该类对 Json 进行序列化和反序列化。

know那里有一个json.net图书馆。

但我的问题是:

我也可以使用JavaScriptSerializer 类来转义我的 json 字符串吗?

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

4

2 回答 2

5

是的,这是对字符串进行安全编码的适当方式。只需在您的字符串上调用序列化。

更清楚地说,如果您查看实际的 JavaScriptSerializer 实现(我使用的是 dotpeek),您可以看到它实际上调用了这个函数:

private static void SerializeString(string input, StringBuilder sb)
{
  sb.Append('"');
  sb.Append(HttpUtility.JavaScriptStringEncode(input));
  sb.Append('"');
}

所以我想另一个答案是你可以使用HttpUtility.JavaScriptStringEncode,尽管它不会在它周围添加双引号。

于 2011-12-09T19:08:19.353 回答
0

您的问题的答案取决于您如何使用 json。

如果您通过 ajax 调用发送,那么您可能不需要对字符串执行任何操作。

如果您将生成的 json 嵌入代码隐藏的 javascript 变量中,那么您只需要最少的转义即可确保 js 格式正确。这就是我们使用的:

sJsonString = sJsonString.Replace("\r\n", "\\r\\n")

(抱歉,那是VB代码,可能需要针对C#做一些调整)

我认为这可能是适当的 C# 代码:

sJsonString = sJsonString.Replace("\\r\\n", "\\\\r\\\\n");
于 2011-12-09T19:04:53.503 回答