按照原样定义JSON,为了将其反序列化为对象,我需要在我的类上创建一个名为" event"的属性,它是一个C#关键字。还有另一种方法可以告诉它字段名称是什么吗?
这是JSON的一个例子:
{event:123 data: {"数据":" 0D0401"" TTL":" 60"" published_at":" 2014-04-16T18:04:42.446Z"" ID":" 48ff6f065067555031192387"} }
以下是因为关键字而无法编译的课程:
public class Event
{
public int event { get; set; }
public EventDetail data { get; set; }
}
public class EventDetail
{
public string data { get; set; }
public string ttl { get; set; }
public DateTime published_at { get; set; }
public string id { get; set; }
}
答案 0 :(得分:4)
更改
public class Event
{
public int event { get; set; }
public EventDetail data { get; set; }
}
到这个
public class Event
{
public int @event { get; set; }
public EventDetail data { get; set; }
}
这个提示显示了在C#中转义所涉及的怪癖:
e.g。 '\'','\ n','\ u20AC'(欧元货币符号),'\ x9'
(相当于\ t)) - 文字字符串转义:
e.g。 “... \吨... \ u0040 ... \ U000000041 ... \ X9 ......”
e.g。 @ “... ”“ ...”
e.g。 “... {{...}} ...”
e.g。 @if(if if as identifier)
e.g。 i \ u0064(对于id)
答案 1 :(得分:1)
尝试使用相关媒体资源上的[DataContract(Name = "@event")]
属性。然后它将(de)正确序列化,并且您可以重命名该属性以使其编译。
答案 2 :(得分:1)
我能够将" e"资本化,它仍然有效。看起来解析机制不区分大小写。
答案 3 :(得分:-1)
无论如何,有人会重新审视这个......
在 DotNet 3.1 using System.Text.Json.Serialization
中使用属性
[JsonPropertyName("TheNameItHasInJsonFile")]
public int Something {get;set;}