首页 > 解决方案 > 忽略 .NET core 2.2 WebAPI 中响应对象的任何特定大小写

问题描述

在 .NET core Webapi 中,默认情况下,返回 json 是驼峰式大小写,可以格式化为返回标题大小写。没关系。是否可以完全忽略大小写。意思是,返回的 json 名称和属性值应该是从服务返回的。不应用大小写。是否可能?例如,如果返回 json 对象名称是“jsonname”,它应该返回相同的而不是“jsonName”

标签: asp.net-core-webapioutput-formattingwebapi

解决方案


您可以自定义DefaultContractResolver

public class LowercaseContractResolver : DefaultContractResolver
{
    protected override string ResolvePropertyName(string propertyName)
    {
        return propertyName;
    }
}

在 Startup.cs 中注册以进行全局序列化:

public void ConfigureServices(IServiceCollection services)
{
    JsonConvert.DefaultSettings = () => new JsonSerializerSettings
    {
        ContractResolver = new LowercaseContractResolver()
    };
    services.AddMvc();
}

你可以像下面这样测试:

[HttpGet]
public ActionResult<string> Get()
{
    var user = new User()
    {
        Id = 1,
        Name = "aa",
        MyAddress = "sad"
    };

    var data = JsonConvert.SerializeObject(user);
    return data;
}

或者您可以为输出 json 设置如下:

return new JsonResult(user, new JsonSerializerSettings { ContractResolver = new LowercaseContractResolver() });

推荐阅读