要反序列化的对象有一个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”大写,它仍然有效。 看起来解析机制不区分大小写。