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

Место общения программистов C#
Ответить
Anonymous
 Как запретить запись значения пустой строки в JSON (C#, .NET 8, 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
Ответить

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

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

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

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

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