One-way serializer to an invariant human-readable format. You can use HumanReadableSerializer.Serialize
to convert an object to a string:
var obj = new { Name = "Gérald Barré", Nickname = "meziantou", Age = 32, MultiLineString = "line1\nline2" };
var output = HumanReadableSerializer.Serialize(obj);
output
contains the following value:
Name: Gérald Barré
Nickname: meziantou
Age: 32
MultiLineString:
line1
line2
You can customize the serializer using an instance of HumanReadableSerializerOptions
or by using attributes:
var options = new HumanReadableSerializerOptions()
{
IncludeFields = true,
DefaultIgnoreCondition = HumanReadableIgnoreCondition.WhenWritingNull,
};
HumanReadableSerializer.Serialize(obj, options);
Available attributes:
[HumanReadableIgnore]
allows to ignore a property or a field[HumanReadableIncludeAttribute]
allows to include a property or a field[HumanReadablePropertyNameAttribute]
allows to set the name of a property or a field when serializing the value[HumanReadablePropertyOrderAttribute]
allows to order the properties when serializing an object[HumanReadableConverterAttribute]
allows to set the converter to use to serialize a property, a field, or a type
You can customize a type you don't own by using the following:
var options = new HumanReadableSerializerOptions();
// Add the HumanReadableIgnoreAttribute to the User.DisplayName property
options.AddAttribute(typeof(User), "DisplayName", new HumanReadableIgnoreAttribute());
options.IgnoreMember<User>(x => x.DisplayName);
options.IgnoreMember<User>(x => new { x.DisplayName, x.CreatedAt });