SharpYaml is a .NET library that provides a YAML parser and serialization engine for .NET objects.
var serializer = new Serializer();
var text = serializer.Serialize(new { List = new List<int>() { 1, 2, 3 }, Name = "Hello", Value = "World!" });
Console.WriteLine(text);
Output:
List:
- 1
- 2
- 3
Name: Hello
Value: World!
SharpYaml is a fork of YamlDotNet and is adding the following features:
- Supports for 4.0+ .NET Portable Class Library compatible with Windows desktop, Windows Phone 8 and Windows RT
- Completely rewritten serialization/deserialization engine
- A single interface
IYamlSerializable
for implementing custom serializers, alongIYamlSerializableFactory
to allow dynamic creation of serializers. Registration can be done throughSerializerSettings.RegisterSerializer
andSerializerSettings.RegisterSerializerFactory
- Can inherit from
ScalarSerializerBase
to provide custom serialization to/from a Yaml scalar
- Can inherit from
- Supports for custom collection that contains user properties to serialize along the collection.
- Supports for Yaml 1.2 schemas
- A centralized type system through
ITypeDescriptor
andIMemberDescriptor
- Highly configurable serialization using
SerializerSettings
(see usage)- Add supports to register custom attributes on external objects (objects that you can't modify) by using
SerializerSettings.Register(memberInfo, attribute)
- Several options and settings:
EmitAlias
,IndentLess
,SortKeyForMapping
,EmitJsonComptible
,EmitCapacityForList
,LimitPrimitiveFlowSequence
,EmitDefaultValues
- Add supports for overriding the Yaml style of serialization (block or flow) with
SerializerSettings.DefaultStyle
andSerializerSettings.DynamicStyleFormat
- Add supports to register custom attributes on external objects (objects that you can't modify) by using
- Supports for registering an assembly when discovering types to deserialize through
SerializerSettings.RegisterAssembly
- Memory allocation and GC pressure improved
You can download SharpYaml binaries directly from nuget.
MIT