在ASP.NET Web API控制器中,我正在使用这样的JSONRESULTS:
return Json(data);
我在Webapiconfig中设置了我在建议的许多地方发现的全局默认值。
HttpConfiguration config = GlobalConfiguration.Configuration;
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new StringEnumConverter());
我认为这将是使用设置,但事实并非如此。为了解决问题:
return Json(data, GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings);
这可以正常工作,但是我是否缺少一些使全局序列化设置一直适用的东西?
通过调用JSON(数据),您正在执行此过载 - 您可以看到它正在创建Serializer设置的新实例
protected internal JsonResult<T> Json<T>(T content)
{
return Json<T>(content, new JsonSerializerSettings());
}
如果您使用返回协商结果的Apicontroller方法之一,例如ApiconTroller.ok,例如return Ok(data)
,则将格式化从全局配置中解析,您将看到所需的行为。