はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【C#】YamlDotNetを利用して簡単にyamlからjsonへ変換をする

はじめに

今回はYamlDotNetを利用して.yamlから.jsonへの変換をC#でやる方法を紹介したいと思います。

概要

YamlDotNetを用いれば複数のライブラリを活用したりせずに簡単に変換ができます。ちなみにYamlDotNet自体はかなり有名なライブラリです。
github.com

やり方

YamlDotNetをインポートする

NuGetからインポートしましょう。

$ dotnet add package YamlDotNet --version 16.3.0

NuGet Gallery | YamlDotNet 16.3.0

コードを記述する

バージョンによって書き方に違いがあるのでご注意ください。以下はv16.3.0の現時点(2025/3)で最新のものになります。

using YamlDotNet.Serialization;

const string yaml = """
                    name: John Doe
                    age: 30
                    address:
                      street: 123 Main St
                      city: Anytown
                      state: CA
                      postalCode: 12345
                    phoneNumbers:
                      - type: home
                        number: 555-1234
                      - type: work
                        number: 555-5678
                    """;

var deserializer = new Deserializer();
var yamlObject = deserializer.Deserialize(yaml);
		
var serializer = new SerializerBuilder()
    .JsonCompatible()
    .Build();
var textWriter = new StringWriter();
serializer.Serialize(textWriter, yamlObject);

// {"name": "John Doe", "age": "30", "address": {"street": "123 Main St", "city": "Anytown", "state": "CA", "postalCode": "12345"}, "phoneNumbers": [{"type": "home", "number": "555-1234"}, {"type": "work", "number": "555-5678"}]}
Console.WriteLine(textWriter.ToString());