Как настроить пользовательские настройки JsonSerializer для Json.NET в веб-API MVC 4?

Я понимаю, что ASP.NET Web API изначально использует Json.NET для (де) сериализации объектов, но есть ли способ указать объект JsonSerializerSettings который вы хотите использовать?

Например, что, если я хотел бы включить информацию о type в сериализованную строку JSON? Обычно я .Serialize() настройки в .Serialize() , но веб-API делает это тихо. Я не могу найти способ ввода настроек вручную.

Вы можете настроить JsonSerializerSettings , используя свойство HttpConfiguration объекте HttpConfiguration .

Например, вы можете сделать это в методе Application_Start ():

 protected void Application_Start() { HttpConfiguration config = GlobalConfiguration.Configuration; config.Formatters.JsonFormatter.SerializerSettings.Formatting = Newtonsoft.Json.Formatting.Indented; } 

Вы можете указать JsonSerializerSettings для каждого JsonConvert , и вы можете установить глобальное значение по умолчанию.

Single 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() в Global.asax.cs:

 JsonConvert.DefaultSettings = () => new JsonSerializerSettings { Formatting = Newtonsoft.Json.Formatting.Indented, ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore }; 

Ссылка: https://github.com/JamesNK/Newtonsoft.Json/issues/78

Ответ добавляет эти 2 строки кода в метод Global.asax.cs Application_Start

 var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter; json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.All; 

Ссылка: Обработка ссылок на круговые объекты

  • ТипNameHandling предостережение в Newtonsoft Json
  • JSON.net сериализуется непосредственно из oledbconnection
  • Использование преобразователей Json.NET для десериализации свойств
  • JSON.Net: принудительная сериализация всех частных полей и всех полей в подclassах
  • JSON.NET Parser * кажется * будет двойной сериализацией моих объектов
  • Отключить использование JSON.net
  • Могу ли я сериализовать вложенные свойства в мой class за одну операцию с помощью Json.net?
  • Исключение «Исключительная привязка к реляционной ссылке» с JSON.Net
  • Линейная сериализация и де-сериализация
  • JSON.Net выдает StackOverflowException при использовании
  • Настройка пользовательских дат WebApi Json.NET
  • Давайте будем гением компьютера.