要反序列化的对象具有C#关键字
本文关键字:关键字 对象 反序列化 | 更新日期: 2023-09-27 17:58:43
定义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; }
}
更改
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#中与转义有关的怪癖:
- 字符文字转义:
例如"''"、"''n"、"''u20AC"(欧元-欧元货币符号)、"''x9"
(相当于''t)-文字字符串转义:
例如"…''t…''u0040…''u00000041…''x9…"
- 逐字逐句字符串转义:
例如@"…"…"
- 字符串。格式转义:
例如"…{…}"
- 关键字转义:
例如@if(用于if作为标识符)
- 标识符转义:
例如i''u0064(用于id)
尝试在相关属性上使用[DataContract(Name = "@event")]
属性。然后它将正确地(反)序列化,并且您可以重命名该属性,以便它进行编译。
我可以将"e"大写,它仍然有效。解析机制似乎不区分大小写。
无论如何都有人会重新访问。。。在DotNet 3.1 using System.Text.Json.Serialization
中使用属性
[JsonPropertyName("TheNameItHasInJsonFile")]
public int Something {get;set;}