Как запретить запись пустого строкового значения в JSON (C#.net8, System.Text.Json)C#

Место общения программистов C#
Anonymous
Как запретить запись пустого строкового значения в JSON (C#.net8, System.Text.Json)

Сообщение Anonymous »

У меня есть свойство объекта; если его значение равно string.Empty, мне не нужно это свойство в сериализованном JSON. Я видел это решение:

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

public class JsonEmptyString : JsonConverter
{
public override string? Read( ref Utf8JsonReader reader, Type typeToConvert, System.Text.Json.JsonSerializerOptions options )
{
return reader.GetString();
}
public override void Write( Utf8JsonWriter writer, string value, System.Text.Json.JsonSerializerOptions options )
{
if ( string.IsNullOrWhiteSpace( value ) )
return;

writer.WriteStringValue( value );
}
}
Но это не работает. Фактически, когда это делает JSON недействительным. Пример класса...

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

[JsonConverter( typeof( JsonEmptyString ) )]
public string StringProp { get; set; } = string.Empty;
public int IntProp { get; set; }
... в результате текст "StringProp:" по-прежнему включен в JSON без значения после него, что делает весь файл JSON недействительным. Результат буквально:

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

"StringProp": "IntProp": 0
Наверняка есть вариант «если строка пустая, не писать ни имя свойства, НИ его значение», верно?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -text-json

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