0

我有一个服务器端操作手动生成一些 json 响应。json 中有一个包含字符串值的属性。

转义此 json 结果中包含的字符串值的最简单方法是什么?

所以这

string result = "{ \"propName\" : '" + (" *** \\\"Hello World!\\\" ***") + "' }";

会变成

string result = "{ \"propName\" : '" + SomeJsonConverter.EscapeString(" *** \\\"Hello World!\\\" ***") + "' }";

并产生以下json

{ \"propName\" : '*** \"Hello World!\" ***' }
4

2 回答 2

1

首先,我发现手动实现序列化的想法不好。你应该这样做只是为了学习目的,或者你有其他非常重要的原因不能使用标准的.NET类(例如使用必须使用.NET 1.0-3.0而不是更高版本)。

现在回到你的代码。您当前生成的结果不是 JSON 格式。您应该将属性名称和属性值放在双倍配额中:

{ "propName" : "*** \"Hello World!\" ***" }

您如何在http://www.json.org/上阅读双重配额,不仅是必须转义的字符。反斜杠字符也必须转义。您可以在http://www.jsonlint.com/上验证您的 JSON 结果。

如果您也手动实现反序列化,您应该知道还有更多的字符可以转义为\"\\: \/、\b、\f、\n、\r、\t 和 \u,后面是 4 个十六进制数字。

我在回答的开头是如何写的,最好使用标准的 .NET 类,如DataContractJsonSerializerJavaScriptSerializer。如果您必须使用 .NET 2.0 而不是更高版本,则可以使用Json.NET

于 2010-10-15T12:21:51.497 回答
0

您可以尝试以下方法:

string.replace(/(\\|")/g, "\\$1").replace("\n", "\\n").replace("\r", "\\r");
于 2010-10-15T13:00:20.087 回答