使用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已经使用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
已编辑