首页 > 解决方案 > 在 .NET 中使用 PascalCase 属性名称创建 API 模型,但序列化为 CamelCase

问题描述

我通常使用各种文本操作工具从一些 REST API 文档中提取属性列表,然后使用 Newtonsoft.Json 在字段上方添加注释以告诉程序,而当此属性可能被称为“DeliveryAddress”时我们序列化为 JSON 请使用“deliveryAddress”调用它

[JsonProperty(PropertyName = "deliveryAddress")]
public string DeliveryAddress{ get; set; }

这似乎有点冗长,所以我想知道是否有更简单的方法,或者 VS 中的某些功能可以用来制作各种“宏”,以将此注释应用于 PascalCase 属性列表。

标签: c#.net.net-corejson.net

解决方案


嗯,这很容易,事实证明我一直在不必要地弄乱我的代码。希望这对我所在职位的其他人来说是一个有用的问题。

这里可以使用另一个级别的注释。

[JsonObject(NamingStrategyType = typeof(CamelCaseNamingStrategy))]
public class Order
{
    public string DeliveryAddress {get;set;}
    public string FirstName {get;set;}
    [JsonProperty(NamingStrategyType = typeof(SnakeCaseNamingStrategy))]
    public string NewlyAddedProperty {get;set;}
}

这将在序列化时将 CamelCasing 应用于所有属性,并且可以在内联注释级别覆盖,如上所示。

多么可爱的图书馆。


推荐阅读