如何在代码中编写JSON字符串值?

ugmeyewa  于 2023-02-14  发布在  其他
关注(0)|答案(9)|浏览(141)

我想将以下字符串存储在String变量中
{“编号”:“123”,“注册日期”:“2012年10月21日00:00:00+05:30”,“状态”:0}
这是我使用的代码。

String str="{"Id":"123","DateOfRegistration":"2012-10-21T00:00:00+05:30","Status":0}";

..但显示错误..

11dmarpk

11dmarpk1#

你必须这么做

String str="{\"Id\":\"123\",\"DateOfRegistration\":\"2012-10-21T00:00:00+05:30\",\"Status\":0}";

拜托
也称为from msdn :)

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
ccgok5k5

ccgok5k52#

C# 10及更低版本

我更喜欢这个只要确保字符串中没有单引号。

var str = "{'Id':'123','DateOfRegistration':'2012-10-21T00:00:00+05:30','Status':0}"
              .Replace("'", "\"");

C# 11和更高版本

您可以简单地将json放在一对三重双引号内:““”

var str = """
    {
        "Id": "123",
        "DateOfRegistration": "2012-10-21T00:00:00+05:30",
        "Status": 0
    }
""";
cotxawn7

cotxawn73#

sudhAnsu63's answer上进行微调,这是一个一行程序
使用**.NET核心**:

string str = JsonSerializer.Serialize(
  new {    
    Id = 2,
    DateOfRegistration = "2012-10-21T00:00:00+05:30",
    Status = 0
  }
);

使用JSON.NET

string str = JsonConvert.SerializeObject(
  new {    
    Id = 2,
    DateOfRegistration = "2012-10-21T00:00:00+05:30",
    Status = 0
  }
);
  • 不需要 * 示例化dynamic ExpandoObject
x3naxklr

x3naxklr4#

还有一种替代方法可以使用Expando对象或XElement编写这些复杂的JSON,然后进行序列化。
https://blogs.msdn.microsoft.com/csharpfaq/2009/09/30/dynamic-in-c-4-0-introducing-the-expandoobject/

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);
uhry853o

uhry853o5#

使用Verbatim String Literals(@"..."),您可以通过将双引号替换为双引号对-“”而不是“来编写内联多行json。

string str = @"
{
    ""Id"": ""123"",
    ""DateOfRegistration"": ""2012-10-21T00:00:00+05:30"",
    ""Status"": 0
}";
to94eoyn

to94eoyn6#

必须像这样转义字符串中的引号:

String str="{\"Id\":\"123\",\"DateOfRegistration\":\"2012-10-21T00:00:00+05:30\",\"Status\":0}";
nkkqxpd9

nkkqxpd97#

C# 11引入了一个新特性,叫做Raw string literals。它使得JSON的使用变得非常简单。只需使用三个双引号(""")作为标记,而不是一个:

string str = """{"Id":"123","DateOfRegistration":"2012-10-21T00:00:00+05:30","Status":0}""";

相关YouTube视频由尼克Chapsas:Strings in C# 11 just got a whole lot better .

gywdnpxw

gywdnpxw8#

你需要像这样转义内引号:

String str="{\"Id\":\"123\",\"DateOfRegistration\":\"2012-10-21T00:00:00+05:30\",\"Status\":0}";
smdnsysy

smdnsysy9#

对于一个开箱即用的解决方案,我将JSON编码为base64,这样就可以在一行中将其作为字符串值导入。
这样可以保留行格式,而不必手动写入动态对象或转义字符,格式与从文本文件读取JSON相同:

var base64 = "eyJJZCI6IjEyMyIsIkRhdGVPZlJlZ2lzdHJhdGlvbiI6IjIwMTItMTAtMjFUMDA6MDA6MDArMDU6MzAiLCJTdGF0dXMiOjB9";
byte[] data = Convert.FromBase64String(base64);
string json = Encoding.UTF8.GetString(data);

//using the JSON text
var result = JsonConvert.DeserializeObject<object>(json);

相关问题