在标准 MVC 中,我使用 JsonNet 返回以 camelCase 格式的 JSON,并成功序列化具有相关实体的实体(否则使用默认序列化程序报告“循环”错误)。
我想为 Orchard 模块中的 WebAPI 控制器做同样的事情。默认情况下,它返回 PascalCase JSON 并在给定实体列表时报告“cyles”异常。
谁能解释如何最好地从 Orchard 模块中配置 JSON 输出,以模仿 JsonNet 会产生什么?
在标准 MVC 中,我使用 JsonNet 返回以 camelCase 格式的 JSON,并成功序列化具有相关实体的实体(否则使用默认序列化程序报告“循环”错误)。
我想为 Orchard 模块中的 WebAPI 控制器做同样的事情。默认情况下,它返回 PascalCase JSON 并在给定实体列表时报告“cyles”异常。
谁能解释如何最好地从 Orchard 模块中配置 JSON 输出,以模仿 JsonNet 会产生什么?
我找到了一种解决方法,即在 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 - 谁能告诉我一种方法或另一种方法?
非常感谢。