Как глобально установить параметры по умолчанию для System.Text.Json.JsonSerializer?C#

Место общения программистов C#
Ответить
Anonymous
 Как глобально установить параметры по умолчанию для System.Text.Json.JsonSerializer?

Сообщение Anonymous »

Вместо этого:

Код: Выделить всё

JsonSerializerOptions options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
// etc.
};
var so = JsonSerializer.Deserialize(someJsonString, options);
Я хотел бы сделать что-то вроде этого:

Код: Выделить всё

// This property is a pleasant fiction
JsonSerializer.DefaultSettings = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
// etc.
};

// This uses my options
var soA = JsonSerializer.Deserialize(someJsonString);

// And somewhere else in the same codebase...
// This also uses my options
var soB = JsonSerializer.Deserialize(someOtherJsonString);

Мы надеемся, что нам не придется передавать экземпляр JsonSerializerOptions для наших наиболее распространенных случаев и переопределить исключение, а не правило.
Как указано в этих вопросах и ответах, это полезная функция Json.Net. Я просмотрел документацию по System.Text.Json, а также этот репозиторий GitHub для .NET Core. И этот.
Похоже, что в .NET Core 3 нет аналога для управления параметрами сериализации JSON по умолчанию. Или я это упускаю из виду?
< hr />
  • ОБНОВЛЕНИЕ [2020-07-18]: См. этот ответ для пакета nuget< /strong> с удобными методами, учитывающими значения по умолчанию настройки.
  • ОБНОВЛЕНИЕ [23 декабря 2019 г.]: Частично необходимо оплатить учитывая мнение сообщества, эта проблема была добавлена ​​в план развития .NET 5.0.

    ОБНОВЛЕНИЕ [2019- 10-10]: Если интересно посмотреть такое поведение реализовано для

    Код: Выделить всё

    System.Text.Json.JsonSerializer
    [/b] перейдите к открытой проблеме GitHub, на которую указал Крис Юнгманн, и выскажите свое мнение.


Подробнее здесь: https://stackoverflow.com/questions/583 ... serializer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»