使用 JavaScriptSerializer 类转义 Json?

发布于 2024-12-20 08:35:25 字数 237 浏览 3 评论 0原文

我使用 JavaScriptSerializer 类来序列化和反序列化为 Json。

知道有一个json.net库。

但我的问题是:

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

或者我应该自己做?如果是这样,我应该通过 encodeURIComponent 来实现吗?

Im using the JavaScriptSerializer Class to serilize and Deserilize in/to Json.

I know there is a json.net library out there.

But My question is :

Can I also use JavaScriptSerializer class to escape my json string ?

or should I do it myself ? and if so should I do it by encodeURIComponent ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笨笨の傻瓜 2024-12-27 08:35:26

是的,这是安全编码字符串的适当方法。只需在字符串上调用序列化即可。

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

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

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

Yes, it's an appropriate way to safely encode a string. Just call serialize on your string.

To be more clear, if you look into the actual JavaScriptSerializer implementation (I'm using dotpeek), you can see that it actually calls this function:

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

So I guess another answer is that you can just use HttpUtility.JavaScriptStringEncode, although it won't add the double quotes around it.

极致的悲 2024-12-27 08:35:26

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

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

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

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

抱歉,这是 VB 代码,可能需要对 C# 进行一些调整)

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

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

The answer to your question depends on how you are using the json.

If you are sending out via an ajax call, then you probably don't need to do anything with the string.

If you are embedding the resulting json in a javascript variable from codebehind, then you only need minimal escaping to ensure the js is correctly formatted. This is what we use for this:

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

(Sorry, that is VB code, may need some adjustment for C#)

I think this may be the appropriate C# code:

sJsonString = sJsonString.Replace("\\r\\n", "\\\\r\\\\n");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文