2016-11-24 71 views
0

在ASP.NET的Web API控制器我使用JsonResults這樣的:設置Api.Controller.Json功能使用全局SerializerSettings

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); 

這工作正常,但我缺少的東西,使全球序列化設置應用所有的時間?

回答

0

通過調用JSON(數據),正在執行這個過載 - 你可以看到它是創造的串行器設置一個新的實例

protected internal JsonResult<T> Json<T>(T content) 
    { 
     return Json<T>(content, new JsonSerializerSettings()); 
    } 

如果您使用的ApiController方法,返回談判的結果,如一個ApiController.Ok,例如return Ok(data),然後格式化程序從全局配置中解析出來,您將看到所需的行爲。