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

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

  • Дезициализация свойств самореференции не работает
  • Создание десериализации свойств, но не сериализация с помощью json.net
  • Сериализовать словарь как массив (пар ключей)
  • Разбор большого json-файла в .NET.
  • Удаление десериализации JSON в объект с помощью Json.NET
  • JSON.NET: зачем использовать JToken - когда-либо?
  • Можно ли указать путь в атрибуте для сопоставления свойства в моем classе с дочерним свойством в моем JSON?
  • json.net: указать конвертер для ключей словаря
  • Как преобразовать datatable в строку json с помощью json.net?
  • Отключить classы JSON до C #
  • Обеспечение json-ключей в .NET
  • Давайте будем гением компьютера.