从Orchard的Web API返回Json Net类型JSON

时间:2013-07-03 11:44:03

标签: asp.net-web-api orchardcms orchardcms-1.6

在标准MVC中,我使用JsonNet返回camelCase中的JSON并成功序列化具有相关实体的实体(否则会使用默认序列化程序报告“周期”错误。)

我想对Orchard模块中的WebAPI控制器执行相同的操作。默认情况下,它会返回PascalCase JSON,并在给定实体列表时报告“cyles”异常。

任何人都可以解释如何最好地配置Orchard模块中的JSON输出,以模仿JsonNet会产生什么?

1 个答案:

答案 0 :(得分:0)

我找到了一种解决方法,即在ActionFilter中将JSON格式化程序设置设置为camelCase:

    public class CamelCaseJsonAttribute : ActionFilterAttribute {

    public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        var jsonFormatter = actionContext.ControllerContext.Configuration.Formatters.OfType<JsonMediaTypeFormatter>().First();
        jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
    }
}

但这似乎效率低下,因为它在每个请求上设置,而不是全局设置。

我猜测模块中的某个地方有一个可扩展点来设置HttpConfiguration - 有人能告诉我这种方式吗?

非常感谢。