如何在JSON.NET中将'
编码为\u0027
?
这样json字符串看起来会像这样:
{"Id":8,"CompanyName":"Jane\u0027s bakery"}
示例调用
Newtonsoft.Json.JsonConvert.SerializeObject(your_object,
Newtonsoft.Json.Formatting.None,
new Newtonsoft.Json.JsonSerializerSettings
{ StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeHtml })
{'Id':8,'CompanyName':'Jane\u0027s bakery'}
? - serge我本以为我需要同样的要求,但是@nick_w的评论让我意识到我根本不需要转义单引号。
如果你正在服务器端代码中生成json字符串然后将其输出到客户端JavaScript中,以便可以将其转换为JavaScript对象,则不需要进行转义。
(代码使用asp风格语法显示)
使用额外的步骤需要转义单引号...
var myData = JSON.parse('<%=myServerGeneratedStringWithSingleQuotesEscaped %>');
使用JSON时...
var myData = <%=myServerGeneratedString %>;
Javascript会将未加引号的字符串解释为javascript对象,例如:
[{"name":"Bill"}, {"name":"Ted"}]
由于在处理服务器端和客户端字符串时很容易混淆,这个提示可能对某些人有用。它可能适用于原帖作者,也可能不适用 - 我相信有许多情况下需要转义单引号。
myServerGeneratedString
是空的并且你去掉单引号,那么会有一个 JavaScript 语法错误,你无法处理。如果保留单引号并且 myServerGeneratedString
是空的,那么就不会有更多的损害,只是一个空字符串,你可以检查。这就是为什么我即使它有点丑陋也要保留它们的原因。 - peter_the_oakNewtonsoft.Json.JsonConvert.SerializeObject(your_object,
Newtonsoft.Json.Formatting.None,
new Newtonsoft.Json.JsonSerializerSettings
{ StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeHtml })
这是我在对象可能包含撇号(例如用户名)时使用的方法。
{"Id":8,"CompanyName":"Jane's bakery"}
是有效的JSON。 - nick_w$.parseJSON
不会造成问题。 - user764754