要反序列化的对象有一个C#关键字

在按原样定义JSON的情况下,为了将其反序列化为对象,我需要在我的类上创建一个名为“event”的属性,它是一个C#关键字。 还有另一种方法可以告诉它字段名称是什么吗?

这是JSON的一个例子:

{event:123 data:{“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; } } 

尝试使用相关属性上的[DataContract(Name = "@event")]属性。 然后它将(de)正确序列化,您可以重命名该属性以便编译。

更改

 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 … \ U000000041 … \ x9 ……”

  • 逐字字符串转义:

例如@“……”“……”

  • string.Format转义:

例如“…… {{…}} ……”

  • 关键字转义:

例如@if(if if as identifier)

  • 标识符转义:

例如i \ u0064(用于id)

我能够将“e”大写,它仍然有效。 看起来解析机制不区分大小写。