YamlDotNet 15.3.0

The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org. Prefix Reserved

Requires NuGet 2.8 or higher.

dotnet add package YamlDotNet --version 15.3.0
NuGet\Install-Package YamlDotNet -Version 15.3.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="YamlDotNet" Version="15.3.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add YamlDotNet --version 15.3.0
#r "nuget: YamlDotNet, 15.3.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install YamlDotNet as a Cake Addin
#addin nuget:?package=YamlDotNet&version=15.3.0

// Install YamlDotNet as a Cake Tool
#tool nuget:?package=YamlDotNet&version=15.3.0

YamlDotNet

Appveyor NuGet
Build status NuGet

YamlDotNet is a YAML library for netstandard and other .NET runtimes.

YamlDotNet provides low level parsing and emitting of YAML as well as a high level object model similar to XmlDocument. A serialization library is also included that allows to read and write objects from and to YAML streams.

YamlDotNet's conformance with YAML specifications:

YAML Spec YDN Parser YDN Emitter
v1.1
v1.2

What is YAML?

YAML, which stands for "YAML Ain't Markup Language", is described as "a human friendly data serialization standard for all programming languages". Like XML, it allows to represent about any kind of data in a portable, platform-independent format. Unlike XML, it is "human friendly", which means that it is easy for a human to read or produce a valid YAML document.

The YamlDotNet library

The library has now been successfully used in multiple projects and is considered fairly stable. It is compatible with the following runtimes:

  • netstandard 2.0
  • netstandard 2.1
  • .NET 6.0
  • .NET 7.0
  • .NET Framework 4.7

Quick start

Here are some quick samples to get you started which can be viewed in this fiddle.

Serialization from an object to a string

using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;
...

 var person = new Person
{
    Name = "Abe Lincoln",
    Age = 25,
    HeightInInches = 6f + 4f / 12f,
    Addresses = new Dictionary<string, Address>{
        { "home", new  Address() {
                Street = "2720  Sundown Lane",
                City = "Kentucketsville",
                State = "Calousiyorkida",
                Zip = "99978",
            }},
        { "work", new  Address() {
                Street = "1600 Pennsylvania Avenue NW",
                City = "Washington",
                State = "District of Columbia",
                Zip = "20500",
            }},
    }
};

var serializer = new SerializerBuilder()
    .WithNamingConvention(CamelCaseNamingConvention.Instance)
    .Build();
var yaml = serializer.Serialize(person);
System.Console.WriteLine(yaml);
// Output: 
// name: Abe Lincoln
// age: 25
// heightInInches: 6.3333334922790527
// addresses:
//   home:
//     street: 2720  Sundown Lane
//     city: Kentucketsville
//     state: Calousiyorkida
//     zip: 99978
//   work:
//     street: 1600 Pennsylvania Avenue NW
//     city: Washington
//     state: District of Columbia
//     zip: 20500

Deserialization from a string to an object

using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;
...

var yml = @"
name: George Washington
age: 89
height_in_inches: 5.75
addresses:
  home:
    street: 400 Mockingbird Lane
    city: Louaryland
    state: Hawidaho
    zip: 99970
";

var deserializer = new DeserializerBuilder()
    .WithNamingConvention(UnderscoredNamingConvention.Instance)  // see height_in_inches in sample yml 
    .Build();

//yml contains a string containing your YAML
var p = deserializer.Deserialize<Person>(yml);
var h = p.Addresses["home"];
System.Console.WriteLine($"{p.Name} is {p.Age} years old and lives at {h.Street} in {h.City}, {h.State}.");
// Output:
// George Washington is 89 years old and lives at 400 Mockingbird Lane in Louaryland, Hawidaho.

More information

More information can be found in the project's wiki.

Installing

Just install the YamlDotNet NuGet package:

PM> Install-Package YamlDotNet

If you do not want to use NuGet, you can download binaries here.

YamlDotNet is also available on the Unity Asset Store.

Contributing

Please read CONTRIBUTING.md for guidelines.

Release notes

Please see the Releases at https://github.com/aaubry/YamlDotNet/releases

Sponsorships

A big shout out to all of our sponsors

AWS

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 is compatible.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.7

    • No dependencies.
  • .NETStandard 2.0

    • No dependencies.
  • .NETStandard 2.1

    • No dependencies.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages (726)

Showing the top 5 NuGet packages that depend on YamlDotNet:

Package Downloads
KubernetesClient

Client library for the Kubernetes open source container orchestrator.

NJsonSchema.Yaml

JSON Schema reader, generator and validator for .NET

KubernetesClient.Models

Client library for the Kubernetes open source container orchestrator.

NetEscapades.Configuration.Yaml

YAML configuration provider implementation to use with Microsoft.Extensions.Configuration.

Microsoft.Azure.WebJobs.Extensions.OpenApi The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

This package helps render OpenAPI document and Swagger UI of Azure Functions endpoints through the in-proc worker.

GitHub repositories (130)

Showing the top 5 popular GitHub repositories that depend on YamlDotNet:

Repository Stars
DevToys-app/DevToys
A Swiss Army knife for developers.
microsoft/semantic-kernel
Integrate cutting-edge LLM technology quickly and easily into your apps
bitwarden/server
Bitwarden infrastructure/backend (API, database, Docker, etc).
Jackett/Jackett
API Support for your favorite torrent trackers
marticliment/WingetUI
WingetUI: The Graphical Interface for your package managers. Could be terribly described as a package manager manager to manage your package managers
Version Downloads Last updated
15.3.0 28,255 6/16/2024
15.1.6 121,632 5/29/2024
15.1.4 235,547 5/11/2024
15.1.2 1,154,686 2/26/2024
15.1.1 443,779 2/4/2024
15.1.0 957,899 1/23/2024
13.7.1 7,290,751 10/15/2023
13.7.0 82,356 10/10/2023
13.5.2 65,076 10/5/2023
13.5.1 19,136 10/5/2023
13.5.0 2,661 10/5/2023
13.4.0 604,493 9/20/2023
13.3.1 2,505,060 8/28/2023
13.2.0 283,406 8/14/2023
13.1.1 3,341,841 6/17/2023
13.1.0 1,788,160 4/16/2023
13.0.2 1,067,515 3/11/2023
13.0.1 3,612,776 2/19/2023
13.0.0 828,933 2/7/2023
12.3.1 5,933,461 12/19/2022
12.3.0 3,500 12/19/2022
12.2.1 219,499 12/14/2022
12.2.0 270,670 12/9/2022
12.1.0 460,199 12/5/2022
12.0.2 1,658,700 10/7/2022
12.0.1 4,181,560 9/17/2022
12.0.0 3,333,076 7/23/2022
11.2.1 69,610,387 6/28/2021
11.2.0 543,161 6/13/2021
11.1.3-nullable-enums-0003 32,712 4/9/2021
11.1.1 3,176,369 4/9/2021
11.1.0 33,044 4/8/2021
11.0.1 65,356 4/1/2021
10.1.0 62,440 3/31/2021
10.0.0 46,663 3/27/2021
9.1.4 8,132,055 1/15/2021
8.1.2 25,428,246 5/28/2020
8.1.0 6,955,526 1/18/2020
8.0.0 6,616,833 10/19/2019
7.0.0 702,256 9/28/2019
6.1.2 2,880,923 7/20/2019
6.1.1 575,890 6/4/2019
6.0.0 12,620,007 3/15/2019
5.4.0 372,675 2/12/2019
5.3.1 7,631 2/12/2019
5.3.0 1,312,981 12/5/2018
5.1.0 1,918,231 9/21/2018