如何配置我的Web API的序列化以使用camelCase(从小写字母开始)属性名称而不是PascalCase像在C#中那样.
我可以为整个项目全球化吗?
我想使用Web API返回camel-cased JSON数据.我继承了一个项目的乱七八糟的项目,使用了以前的程序员目前使用的任何外壳(严重的!所有大写字母,小写字母,pascal-casing和骆驼外壳 - 请你选择!),所以我不能使用这个技巧将它放在WebApiConfig.cs文件中,因为它将破坏现有的API调用:
// Enforce camel-casing for the JSON objects being returned from API calls.
config.Formatters.OfType<JsonMediaTypeFormatter>().First().SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Run Code Online (Sandbox Code Playgroud)
所以我使用的是使用JSON.Net序列化程序的自定义类.这是代码:
using System.Web.Http;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
public class JsonNetApiController : ApiController
{
public string SerializeToJson(object objectToSerialize)
{
var settings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
if (objectToSerialize != null)
{
return JsonConvert.SerializeObject(objectToSerialize, Formatting.None, settings);
}
return string.Empty;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是返回的原始数据如下所示:
"[{\"average\":54,\"group\":\"P\",\"id\":1,\"name\":\"Accounting\"}]"
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,反斜杠搞得一团糟.以下是我使用自定义类调用的方式:
public class Test
{
public double Average { get; set; }
public string …Run Code Online (Sandbox Code Playgroud)