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);
    }
}

我看不出我做错了什么,是不是我遗漏了什么?

Camel Case Web API Json设置似乎不起作用

不返回IHttpActionResult,而是返回具体类型(在您的情况下为User)。这样,您将避免许多潜在的问题,包括序列化、可测试性和内容协商。

所以也许有人可以解释这一点,但我发现使用ApiController.Json方法似乎没有使用任何全局格式化程序(我删除了它们,这个方法仍然有效,并返回了有效的Json,尽管是在Pascal Case中)。

当我使用ApiController.Ok方法时,它确实使用了全局格式化程序和应用于它们的任何设置,比如CamelCasePropertyNamesContractResolver。

所以我的解决方案是用"Ok"而不是"Json"。。。但我不知道它们为什么不同。。。