11

如何使用 JSON.NET对'to进行编码?\u0027

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

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

4 回答 4

22

样品电话

 Newtonsoft.Json.JsonConvert.SerializeObject(your_object,
   Newtonsoft.Json.Formatting.None, 
   new Newtonsoft.Json.JsonSerializerSettings 
   { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeHtml })
于 2014-02-03T22:10:55.017 回答
7

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

JsonWriter.StringEscapeHandling

于 2012-11-26T02:22:57.497 回答
2

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

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

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

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

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

按原样使用 JSON...

var myData = <%=myServerGeneratedString %>;

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

[{"name":"Bill"}, {"name":"Ted"}]

作为 javascript 对象。

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

于 2014-05-20T15:16:20.103 回答
-1

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

是我在对象可能包含撇号时使用的,例如用户名。

于 2018-07-13T21:45:13.857 回答