Naming conventions of properties defer slightly in .NET and JavaScript. .NET uses?pascal-case and JavaScript uses camel-case.
When developing a .NET API all the public properties should use the naming convention pascal-case. However if the service is consumed as an API with a JavaScript client then the json returned should be camel-case.
Now you could go and add the JsonPropertyAttribute (Newtonsoft.Json) and set the camel-case version of each?property like the below code, however this would mean amending all of your?dtos which are?exposed. This could be a very time consuming task.
public class Person
{
[Required]
[JsonProperty(PropertyName = "firstNames")]
public string FirstNames { get; set; }
[Required]
[JsonProperty(PropertyName = "lastName")]
public string LastName { get; set; }
[JsonProperty(PropertyName = "dateOfBirth")]
public DateTime? DateOfBirth { get; set; }
}
Or you can add the following two lines of code in the WebApiConfig.cs in the AppStart folder.?Easy.
var jsonSerializerSettings = GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings; jsonSerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
The WebApiConfig class may look like this
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
var jsonSerializerSettings = GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;
jsonSerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
jsonSerializerSettings.Formatting = Formatting.Indented;
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}