我在将这个json字符串存储到一个变量时遇到了一个问题。一定是我在这里遗漏了一些愚蠢的东西
private string someJson = @"{
"ErrorMessage": "",
"ErrorDetails": {
"ErrorID": 111,
"Description": {
"Short": 0,
"Verbose": 20
},
"ErrorDate": ""
}
}";
7条答案
按热度按时间axkjgtzd1#
如果使用@符号,则必须对“”进行转义,因为它不允许在第一个“”之后使用\作为转义符。因此,有两个选项:
不要使用@,而使用\来转义“
或使用双引号
qyyhg6bp2#
首先,我要说的是:正是由于这个原因,我喜欢在JSON blob中使用单引号。
但是,很大程度上取决于如何声明
string
变量。...这是一个ASCII编码的字符串,使用单引号应该很好。您可以使用双-双-引号转义序列来转义双引号,但单引号的设置更简洁。请注意,\”在这种情况下不起作用。
...这个声明使用C#的默认字符串编码,Unicode。注意,必须使用带双引号的斜杠转义序列--双引号不起作用--但单引号不受影响。
从这里可以看出,单引号JSON文字不受所使用的C#字符串编码的影响。这就是为什么我说在硬编码的JSON blob中使用单引号比使用双引号更好的原因--它们工作量更少,可读性更强。
pkbketx93#
简单的方法是将JSON复制到一个.json文件中,然后在代码中读取该文件
pjngdqdw4#
用C#在字符串中编写JSON内联有点笨拙,因为JSON标准要求双引号,在C#中需要转义,如其他答案所示。一个优雅的解决方案是使用C#动态和JSON.Net中的JObject。
请参阅https://www.newtonsoft.com/json/help/html/CreateJsonDynamic.htm。
vfwfrxfs5#
我也遇到了同样的问题,最后我写了一个开源的在线转换器,它接受JSON字符串,并使用双引号语法吐出C#替换的字符串。
将逃入
af7jpaap6#
如果您使用的是Visual Studio,则选择整个JSON字符串,然后按crtl+f查找所选内容中的双引号,然后将“替换为“”
ocebsuys7#
从.NET 7支持的C# 11开始,可以通过将JSON字符串括在三引号字符中来嵌入JSON字符串而无需任何修改,这是一个称为 Raw string literal(learn.microsoft.com)的功能。相关的有用语言功能是StringSyntaxAttribute,它允许Visual Studio识别字符串变量是JSON字符串并突出显示任何拼写错误。示例: