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

Camel Case Web API Json settings do not seem to be working

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

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

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

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

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

而不是 returning IHttpActionResult,return 具体类型(User 在你的例子中)。这样,您将避免许多潜在问题,包括序列化、可测试性和内容协商。