相关疑难解决方法(0)

Web API从小写字母开始序列化属性

如何配置我的Web API的序列化以使用camelCase(从小写字母开始)属性名称而不是PascalCase像在C#中那样.

我可以为整个项目全球化吗?

.net c# asp.net-mvc json.net asp.net-web-api

52
推荐指数
2
解决办法
3万
查看次数

使用JSON.Net的Web API的Camel-Casing问题

我想使用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)

html c# asp.net-mvc json asp.net-web-api

14
推荐指数
1
解决办法
2万
查看次数

标签 统计

asp.net-mvc ×2

asp.net-web-api ×2

c# ×2

.net ×1

html ×1

json ×1

json.net ×1