asp.net core 1.0 web api 使用驼峰命名法。
asp.net core 1.0 web api 使用驼峰命名法。
在RC2
上,相同的代码返回驼峰格式的JSON。在NetCore 1.0发布后,我开始了一个新项目,但相同的代码返回小写的JSON。
尝试了多种解决方案,但都没有起作用。
在使用ASP.NET Core 1.0 Web API时,有时我们希望返回的JSON字符串的属性名采用驼峰命名法(camelCase),以匹配.NET类和属性的命名规范。然而,默认情况下,ASP.NET Core返回的JSON字符串使用帕斯卡命名法(PascalCase)。
为了解决这个问题,我们可以在全局级别或者个别序列化器级别进行设置。
在全局级别设置时,我们可以通过修改Startup.cs文件中的ConfigureServices方法来实现。我们需要创建一个JsonSerializerOptions对象,并将其设置为使用驼峰命名法。具体代码如下所示:
public void ConfigureServices(IServiceCollection services) { services.AddControllers() .AddJsonOptions(options => { options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; }); }
在个别序列化器级别进行设置时,我们可以在控制器的操作方法中使用JsonResult对象来返回JSON数据。我们需要创建一个JsonSerializerSettings对象,并将其设置为使用默认的ContractResolver。具体代码如下所示:
var jsonSerializerSettings = new JsonSerializerSettings { ContractResolver = new DefaultContractResolver() }; return new JsonResult(myObject, jsonSerializerSettings);
这样,返回的JSON字符串的属性名将会采用驼峰命名法。
通过上述方法,我们可以根据需求将ASP.NET Core 1.0 Web API返回的JSON字符串的属性名设置为驼峰命名法,以便与.NET类和属性的命名规范保持一致。
ASP.NET Core 1.0是一个开发Web应用程序的框架,它提供了许多功能和工具来简化开发过程。在ASP.NET Core 1.0中,使用camelCase命名约定是一种常见的做法,它可以用于保持JSON对象的属性名称与.NET类属性名称相同。
然而,ASP.NET Core 1.0的默认行为是使用PascalCase命名约定,这与camelCase不同。这可能导致在使用ASP.NET Core 1.0的Web API时出现问题,因为JSON对象的属性名称与.NET类属性名称不匹配。
为了解决这个问题,可以使用以下代码片段:
services .AddMvc() .AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver(); });
这段代码将在应用程序启动时配置MVC服务,并将JSON序列化选项添加到JSON选项中。通过将ContractResolver设置为DefaultContractResolver,可以确保JSON对象的属性名称与.NET类属性名称保持一致,从而解决了camelCase问题。
为了使用这段代码,需要引用以下命名空间/引用:
Microsoft.Extensions.DependencyInjection
这个命名空间包含了用于配置MVC的扩展方法。在ASP.NET Core 1.0中,可以通过使用Microsoft.Extensions.DependencyInjection.IMvcBuilder类的扩展方法来配置MVC。在这个例子中,我们使用了MvcJsonMvcBuilderExtensions类的AddJsonOptions方法来添加JSON选项。
这是一个在使用ASP.NET Core 1.0的Web API时解决camelCase问题的示例。通过使用上述代码片段,可以确保JSON对象的属性名称与.NET类属性名称相同,从而提高开发的一致性和可维护性。
在ASP.NET Core 1.0 Web API中使用camelCase的问题出现的原因是默认的JSON行为会将属性名转换为camelCase。然而,有些开发者希望保持属性名不变,即使用原始的大小写。为了解决这个问题,可以在`ConfigureServices`方法中进行配置。
解决方法如下:
public void ConfigureServices(IServiceCollection services) { services.AddMvc() .AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new DefaultContractResolver(); }); }
需要注意的是,这种配置在.NET Core 2.0中可能会有不同。在.NET Core 2.0中,`DefaultContractResolver`会将属性名转换为TitleCase,而`CamelCasePropertyNamesContractResolver`会保持属性名的大小写不变。
不清楚在.NET Core 1.x和2.0之间是否有这种改变。