Как игнорировать пустые строки в ответе API JSON?C#

Место общения программистов C#
Гость
Как игнорировать пустые строки в ответе API JSON?

Сообщение Гость »


У меня есть API, разработанный в .NET6. В настоящее время все свойства, возвращаемые как нулевые, скрываются с помощью следующего:

_ = Services.AddControllers().AddJsonOptions(options => { options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull; }); Я требую игнорировать также значения, которые представляют собой пустую строку. Там я реализовал приведенный ниже конвертер:

публичный класс EmptyStringConverter: JsonConverter { общедоступная строка переопределения Read (ссылка на средство чтения Utf8JsonReader, тип typeToConvert, параметры JsonSerializerOptions) { вернуть считыватель.GetString()!; } общедоступное переопределение void Write (писатель Utf8JsonWriter, строковое значение, параметры JsonSerializerOptions) { если (!string.IsNullOrEmpty(значение)) { писатель.WriteStringValue(значение); } еще { писатель.WriteNullValue(); } } } Добавлен конвертер в AddJsonOptions

_ = Services.AddControllers().AddJsonOptions(options => { options.JsonSerializerOptions.Converters.Add(новый EmptyStringConverter()); options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull; }); Конвертер работает - меняет свойства пустой строки на null, но в ответе API эти свойства видны, хотя я установил DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull.

Я просмотрел другие статьи, в которых говорилось о необходимости добавления атрибута по умолчанию, но это означает необходимость изменить все свойства всех моделей, что невозможно. Кроме того, это также означает, что числа со значением 0 будут скрыты, чего мне не хотелось бы.

Мне нужно использовать System.Text.Json, а не Newtonsoft.

Есть ли способ добиться этого?

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