Как установить пользовательские JsonSerializerSettings для Json.NET в MVC 4 Web API?
Я понимаю, что ASP.NET Web API изначально использует Json.NET для (de)сериализации объектов, но есть ли способ указать JsonSerializerSettings
объект, который вы хотите для этого использовать?
например, что, если бы я хотел включить type
информация в сериализованную строку JSON? Обычно я бы ввел настройки в .Serialize()
вызов, но веб-API делает это молча. Я не могу найти способ ввести настройки вручную.
3 ответа:
вы можете настроить
JsonSerializerSettings
С помощьюFormatters.JsonFormatter.SerializerSettings
собственность вHttpConfiguration
"объект".например, вы можете сделать это в методе Application_Start ():
protected void Application_Start() { HttpConfiguration config = GlobalConfiguration.Configuration; config.Formatters.JsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented; }
вы можете указать
JsonSerializerSettings
для каждогоJsonConvert
, и вы можете установить глобальное значение по умолчанию.один
JsonConvert
с перегрузом:// Option #1. JsonSerializerSettings config = new JsonSerializerSettings { ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore }; this.json = JsonConvert.SerializeObject(YourObject, Formatting.Indented, config); // Option #2 (inline). JsonConvert.SerializeObject(YourObject, Formatting.Indented, new JsonSerializerSettings() { ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore } );
Глобальные Настройки С кодом
Application_Start()
в глобальном.асакс.cs:JsonConvert.DefaultSettings = () => new JsonSerializerSettings { Formatting = Newtonsoft.Json.Formatting.Indented, ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore };