Camel Case Web API Json设置似乎不起作用
本文关键字:不起作用 设置 Json Case Web API Camel | 更新日期: 2023-09-27 18:19:53
我在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);
}
}
我看不出我做错了什么,是不是我遗漏了什么?
不返回IHttpActionResult
,而是返回具体类型(在您的情况下为User
)。这样,您将避免许多潜在的问题,包括序列化、可测试性和内容协商。
所以也许有人可以解释这一点,但我发现使用ApiController.Json方法似乎没有使用任何全局格式化程序(我删除了它们,这个方法仍然有效,并返回了有效的Json,尽管是在Pascal Case中)。
当我使用ApiController.Ok方法时,它确实使用了全局格式化程序和应用于它们的任何设置,比如CamelCasePropertyNamesContractResolver。
所以我的解决方案是用"Ok"而不是"Json"。。。但我不知道它们为什么不同。。。