C#属性命名事件
我使用的是Json序列化程序,需要绑定到一个名为“event”的属性名。当然event是C#中的一个关键字,因此不允许执行C#属性命名事件,c#,json,C#,Json,我使用的是Json序列化程序,需要绑定到一个名为“event”的属性名。当然event是C#中的一个关键字,因此不允许执行string event{get;set;}之类的操作。到底有什么办法去做吗?我无法更改返回给我的对象的名称。Use@to Use 前缀“@”允许将关键字用作标识符,即 与其他编程语言接口时非常有用。 [...] 带有@前缀的标识符称为逐字标识符。使用 不允许使用非关键字标识符的@前缀,但 作为一种风格,强烈地劝阻 假设您使用的是Json.NET,则可以将、或与一起使用(有一
string event{get;set;}
之类的操作。到底有什么办法去做吗?我无法更改返回给我的对象的名称。Use@to Use
前缀“@”允许将关键字用作标识符,即
与其他编程语言接口时非常有用。
[...]
带有@前缀的标识符称为逐字标识符。使用
不允许使用非关键字标识符的@前缀,但
作为一种风格,强烈地劝阻
假设您使用的是Json.NET,则可以将、或与一起使用(有一个内置的属性名,它使事件成为camelCase,因此
Event
的属性名将序列化为Event
)
+1用于
JsonProperty
,它避免了在@
中到处乱搞。当然,总会有一个可怜的灵魂不得不用VB写东西,所以Event
对他们来说也是禁区,他们必须写[Event]
来绕开它,因此他们会抱怨你应该用一个完全不同的词。
string @event { get; set; }
[JsonProperty("event")]
public string Event { get; set; }
public string @event { get; set; }
public string Event { get; set; }
var s = JsonConvert.SerializeObject(myObj, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });