Short Notation UTF-16 character Description
\' \u0027 allow to enter a ' in a character literal, e.g. '\''
\" \u0022 allow to enter a " in a string literal, e.g. "this is the double quote (\") character"
\\ \u005c allow to enter a \ character in a character or string literal, e.g. '\\' or "this is the backslash (\\) character"
\0 \u0000 allow to enter the character with code 0
\a \u0007 alarm (usually the HW beep)
\b \u0008 back-space
\f \u000c form-feed (next page)
\n \u000a line-feed (next line)
\r \u000d carriage-return (move to the beginning of the line)
\t \u0009 (horizontal-) tab
\v \u000b vertical-tab
dynamic contact = new ExpandoObject
{
Name = "Patrick Hines",
Phone = "206-555-0144",
Address = new ExpandoObject
{
Street = "123 Main St",
City = "Mercer Island",
State = "WA",
Postal = "68402"
}
};
//Serialize to get Json string using NewtonSoft.JSON
string Json = JsonConvert.SerializeObject(contact);
var base64 = "eyJJZCI6IjEyMyIsIkRhdGVPZlJlZ2lzdHJhdGlvbiI6IjIwMTItMTAtMjFUMDA6MDA6MDArMDU6MzAiLCJTdGF0dXMiOjB9";
byte[] data = Convert.FromBase64String(base64);
string json = Encoding.UTF8.GetString(data);
//using the JSON text
var result = JsonConvert.DeserializeObject<object>(json);
9条答案
按热度按时间11dmarpk1#
你必须这么做
拜托
也称为from msdn :)
ccgok5k52#
C# 10及更低版本
我更喜欢这个只要确保字符串中没有单引号。
C# 11和更高版本
您可以简单地将json放在一对三重双引号内:““”
cotxawn73#
在sudhAnsu63's answer上进行微调,这是一个一行程序:
使用**.NET核心**:
使用JSON.NET:
dynamic ExpandoObject
。x3naxklr4#
还有一种替代方法可以使用Expando对象或XElement编写这些复杂的JSON,然后进行序列化。
https://blogs.msdn.microsoft.com/csharpfaq/2009/09/30/dynamic-in-c-4-0-introducing-the-expandoobject/
uhry853o5#
使用Verbatim String Literals(
@"..."
),您可以通过将双引号替换为双引号对-“”而不是“来编写内联多行json。to94eoyn6#
必须像这样转义字符串中的引号:
nkkqxpd97#
C# 11引入了一个新特性,叫做Raw string literals。它使得JSON的使用变得非常简单。只需使用三个双引号(
"""
)作为标记,而不是一个:相关YouTube视频由尼克Chapsas:Strings in C# 11 just got a whole lot better .
gywdnpxw8#
你需要像这样转义内引号:
smdnsysy9#
对于一个开箱即用的解决方案,我将JSON编码为base64,这样就可以在一行中将其作为字符串值导入。
这样可以保留行格式,而不必手动写入动态对象或转义字符,格式与从文本文件读取JSON相同: