如何在JSON.NET中编码单引号/撇号

时间:2012-11-24 14:10:41

标签: asp.net json.net json

如何使用JSON.NET将'编码为\u0027

这样json字符串看起来像这样:

{"Id":8,"CompanyName":"Jane\u0027s bakery"}

4 个答案:

答案 0 :(得分:19)

示例通话

 Newtonsoft.Json.JsonConvert.SerializeObject(your_object,
   Newtonsoft.Json.Formatting.None, 
   new Newtonsoft.Json.JsonSerializerSettings 
   { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeHtml })

答案 1 :(得分:7)

Json.NET 4.5 Release 11增加了一个控制字符串转义的选项。其中一个选项是转义包含单引号的所有HTML字符。

JsonWriter.StringEscapeHandling

答案 2 :(得分:2)

我认为我有同样的要求,但@ nick_w的评论让我意识到我根本不需要逃避单引号。

如果您在服务器端代码中生成json作为字符串,然后将其输出到客户端javascript,那么它可以转换为javascript对象,然后不需要转义。

(使用asp样式语法显示的代码)

使用需要转义单引号的额外步骤......

var myData = JSON.parse('<%=myServerGeneratedStringWithSingleQuotesEscaped %>');

原样使用JSON ......

var myData = <%=myServerGeneratedString %>;

Javascript将解释不带引号的字符串,例如

  

[{“name”:“Bill”},{“name”:“Ted”}]

作为javascript对象。

由于在处理服务器端和客户端字符串时很容易混淆,这个提醒可能对某人有用。它可能适用于也可能不适用于OP - 我确信有很多情况下单引号真的需要转义。

答案 3 :(得分:0)

Newtonsoft.Json.JsonConvert.SerializeObject(your_object, Newtonsoft.Json.Formatting.None, new Newtonsoft.Json.JsonSerializerSettings { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeHtml })

当对象可能包含撇号(例如用户名)时,我使用