我在WebApiConfig.cs文件和Register方法中有这个代码:
var jsonFormatter=config.Formatters.JsonFormatter;
jsonFormatter.UseDataContractJsonSerializer = false;
jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
尽管如此(我确实通过使用Debugger.Launch()确保此代码确实正在执行),它仍然在Pascal Case中输出我所有的Json。
以下是操作方法中的代码:
[HttpGet]
[Route("Details")]
public IHttpActionResult Details() {
using (var context = new Security.Context()) {
var user = context.Users.Current;
if (user == null) { return Json((object)null); }
return Json(user);
}
}
我看不出我做错了什么,有什么我想念的吗?
答案 0 :(得分:1)
所以也许有人可以解释这一点,但我发现使用ApiController.Json方法似乎并没有使用任何全局格式化程序(我将它们全部删除,这个方法仍然起作用并返回有效的Json,尽管在Pascal Case中)。
当我使用ApiController.Ok方法时,它会使用全局格式化程序以及应用于它们的任何设置,例如CamelCasePropertyNamesContractResolver。
所以我的解决方案是使用“Ok”代替“Json”......但为什么他们不同我不知道......
答案 1 :(得分:1)
不是返回IHttpActionResult
,而是返回具体类型(User
)。这样,您就可以避免许多潜在的问题,包括序列化,可测试性和内容协商。