Dot-Net
我可以在不註釋我的類的情況下自定義 Json.NET 序列化嗎?
我需要使用 Json.NET 將一些實體類序列化為 JSON。為了自定義屬性的名稱,我使用如下
[JsonProperty]屬性:[JsonProperty("lastName")] public string LastName { get; set; }問題是,我不想在我的實體中包含任何與 JSON 相關的屬性……有沒有辦法以某種方式將註釋外部化,這樣它們就不會弄亂我的實體?
使用
XmlSerializer,可以通過XmlAttributeOverrides類輕鬆完成。Json.NET 有類似的東西嗎?
是的,您可以創建自定義契約解析器並自
JsonProperty定義定義,而無需使用屬性。範例如下:class Person { public string First { get; set; } } class PersonContractResolver : DefaultContractResolver { protected override JsonProperty CreateProperty( MemberInfo member, MemberSerialization memberSerialization) { var property = base.CreateProperty(member, memberSerialization); if (member.DeclaringType == typeof(Person) && member.Name == "First") { property.PropertyName = "FirstName"; } return property; } } class Program { static void Main(string[] args) { var result = JsonConvert.SerializeObject( new Person { First = "John" }, new JsonSerializerSettings { ContractResolver = new PersonContractResolver() }); Console.WriteLine(result); } }此範常式序的輸出如下:
// {"FirstName":"John"}