2014-04-21 30 views
7

Json serializer kullanıyorum ve 'event' adında bir özellik adına bağlamanız gerekiyor Kurs olayı C# içinde bir anahtar sözcüktür, bu nedenle string event { get; set; } gibi bir şey yapmanıza izin verilmez. Bunu yapmanın yolu var mı? Geri gelen nesnenin adını değiştiremem.C# Özellik Adlandırılmış Olay

cevap

11

Eğer Json.NET kullandığınız varsayarsak, bir ContractResolver (yerleşik bir şeyler camelCase yapar biri, bu yüzden Event bir özellik adı var seri olacağını oluyor ile JsonProperty attribute veya @ symbol veya kullanabilirsiniz event).

[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() }); 
+1

+1,' @ 'her şeyle uğraşmaktan kaçınıyor. Tabii ki, her zaman VB'de yazmak zorunda olan bir zavallı ruh olacak, bu yüzden 'Etkinlik' onlar için sınırsızdır ve bunun için [Olay] 'yazmak zorundadırlar. tamamen farklı bir kelime kullanmış olmalı. – ClickRick

11

Kullanım @keywords as identifiers

string @event { get; set; } 

öneki "@" diğer programlama dilleri ile arayüz kullanışlı olduğu tanımlayıcılar olarak anahtar kelimelerin kullanılmasını sağlar kullanmak. [...] @ önekine sahip bir tanımlayıcı, bir kimlik tanımlayıcısı olarak adlandırılır. Anahtar sözcük olmayan tanımlayıcılar için @ önekinin kullanmasına izin verilir, ancak bir stil sorunu olarak şiddetle tavsiye edilmez.

+0

Tam olarak aradığım şey teşekkürler! '@ JsonProperty' için – KJ3

İlgili konular