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

时间:2015-10-29 09:58:52

标签: c# json json.net asp.net-web-api2 camelcasing

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

我看不出我做错了什么,有什么我想念的吗?

2 个答案:

答案 0 :(得分:1)

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

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

所以我的解决方案是使用“Ok”代替“Json”......但为什么他们不同我不知道......

答案 1 :(得分:1)

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