Игнорировать логическое свойство = true в сериализации JSONC#

Место общения программистов C#
Anonymous
Игнорировать логическое свойство = true в сериализации JSON

Сообщение Anonymous »

У меня есть запись со свойством bool, значение которого по умолчанию = true:

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

private record MyRecord()
{
public bool BoolProperty { get; init; } = true;
}
Я хочу игнорировать «BoolProperty»:true в сериализованной строке JSON. Другими словами, если BoolProperty имеет значение true, я хочу, чтобы это свойство было исключено из результирующего представления JSON. Возможно ли это?
Вот демонстрация желательного поведения:

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

JsonSerializerOptions options = new();
options.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault;

MyRecord obj = new();
Console.WriteLine($"Object: {obj}"); // OK
string json = JsonSerializer.Serialize(obj, options);
Console.WriteLine($"JSON: {json}"); // Not OK
Вывод:

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

Object: MyRecord { BoolProperty = True }
JSON: {"BoolProperty":true}
Желаемый результат должен быть следующим:

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

Object: MyRecord { BoolProperty = True }
JSON: {}
Онлайн-демо.
Я искал повторяющийся вопрос и не нашел ни одного.

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

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