ОБНОВЛЕНИЕ [2019-12-23]: Отчасти благодаря участию вокального сообщества эта проблема была добавлена в дорожную карту для .NET 5.0.
ОБНОВЛЕНИЕ [2019-10-10]: Если интересно посмотреть, как это поведение реализовано дляSystem.Text.Json.JsonSerializer
на голову к открытому вопросу GitHub указал Крис Yungmann и весят.
Вместо этого:
JsonSerializerOptions options = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
// etc.
};
JsonSerializer.Deserialize<SomeObject>(someJsonString, options);
Я хотел бы сделать что-то вроде этого:
// This property is a pleasant fiction
JsonSerializer.DefaultSettings = new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
// etc.
};
// This uses my options
JsonSerializer.Deserialize<SomeObject>(someJsonString);
// And somewhere else in the same codebase...
// This also uses my options
JsonSerializer.Deserialize<SomeOtherObject>(someOtherJsonString);
Надежда состоит в том, что не нужно передавать экземпляр JsonSerializerOptions
для наших наиболее распространенных случаев и переопределять исключение, а не правило.
Как указано в этих вопросах, это полезная функция Json.Net. Я посмотрел в документации на System.Text.Json
как это GitHub репо для .NET Core. И этот .
В .NET Core 3 не существует аналога для управления значениями по умолчанию для сериализации JSON. Или я пропускаю это?
источник
There doesn't seem to be an analog for managing JSON serialization defaults in Core-3
- вы говорите о запросах в и из вашего API? или запросы и ответы на другие ресурсы?Ответы:
Нет,
JsonSerializerOptions
не выставляет параметры по умолчанию . Если вы используете определенную веб-среду, может быть способ указать (де) настройки сериализации через это. В противном случае я предлагаю создать свои собственные удобные методы.Смотрите также этот открытый вопрос .
источник
Вы можете создать метод расширения. Вот пример
Я использую отдельные методы против необходимости создавать специальные настройки, чтобы все настройки были в одном месте и легко использовались повторно.
Затем вы вызываете его как метод для строки, литеральной или переменной.
источник
System.Text.Json.JsonSerializer
NET Core-3.0 без дополнительных зависимостей. Спасибо.System.Text.Json.JsonSerializer
. Концепция была точно такой же. Я также обновил ссылку на пример.Параметры по умолчанию не представлены в
JsonSerializer
.NET Core 3.1. Однако по состоянию на декабрь 2019 года это было добавлено в дорожную карту для 5.0.Релиз .NET 5.0 ожидается в ноябре 2020 года. Но нет никаких гарантий, что эта конкретная проблема будет решена в любое конкретное время. Помимо ожидания, эти ответы предлагают обходные пути:
источник
Обходной путь был предложен GitHub пользователя André-SS6 следующим образом :
источник
(Если вы когда-нибудь переключитесь на использование Json.NET)
Я предпочитаю и рекомендую быть явным и передавать настройки всем вызовам, но вы можете установить значения по умолчанию с помощью DefaultSettings .
а потом
источник
System.Text.Json
котором сериализация JSON встроена в .NET Core 3.0. Спасибо что нашли время ответить.