Как установить пользовательские 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 };