使用JavaScriptSerializer类进行Json转义

本文关键字:Json 转义 JavaScriptSerializer 使用 | 更新日期: 2023-09-27 18:17:27

我使用JavaScriptSerializer类在/to Json中序列化和反序列化。

I know有一个json.net库。

但是我的问题是:

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

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

使用JavaScriptSerializer类进行Json转义

是的,这是一种安全编码字符串的合适方法。只要在你的字符串上调用serialize。

为了更清楚,如果您查看实际的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");