使用Web API Get()正确格式化JSON

本文关键字:格式化 JSON Web API Get 使用 | 更新日期: 2023-09-27 18:28:05

在我的WebApi项目中,我使用参数化方法,而不是按方法名调用。我在我的angular代码中使用$resource,这个调用非常有效。

例如,这给我一个联系人列表:

public class LeadsController : ApiController
{
    public IEnumerable<Contact> Get()
    {
        var contacts = new ContactRepository();
        return contacts.BuildContacts();
    }
}

我唯一的问题是套管,所以我使用newtonsoft,必须将返回类型更改为字符串才能工作

public class LeadsController : ApiController
{
    public string Get()
    {
        var contacts = new ContactRepository();
        var settings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };
        return JsonConvert.SerializeObject(contacts, Formatting.Indented, settings); 
    }
}

现在我遇到的问题是angular需要一个数组,但它返回了一个对象(字符串),所以我有错误。这是我的角度

return $resource('http://localhost:33651/api/Leads/', {
    get: { method: 'GET', isArray: false },
    query: {
        method: 'GET',
        isArray: true
    }
});

在我的webapi方法上,有没有一种方法可以让我返回IEnumerable并正确地将Json格式化为驼色大小写?我处理这种情况的最佳方式是什么?

感谢的帮助

使用Web API Get()正确格式化JSON

Web API已经使用Newtonsoft序列化程序,所以您只需要配置它。将这些行添加到WebApiConfig.Register方法:

    var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
    json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();

并返回IEnumerable<Contact>而不是string,请查看此示例项目https://github.com/maxbrodin/camel-case-serialization-webapi

已编辑