0

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

我想为 Orchard 模块中的 WebAPI 控制器做同样的事情。默认情况下,它返回 PascalCase JSON 并在给定实体列表时报告“cyles”异常。

谁能解释如何最好地从 Orchard 模块中配置 JSON 输出,以模仿 JsonNet 会产生什么?

4

1 回答 1

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 - 谁能告诉我一种方法或另一种方法?

非常感谢。

于 2013-07-04T19:55:06.277 回答