Как игнорировать пустые строки в ответе API JSON? ⇐ 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.
Есть ли способ добиться этого?
У меня есть 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.
Есть ли способ добиться этого?
Мобильная версия