はなちるのマイノート

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

【C#】System.Text.JsonのJsonNodeを用いてスキーマレスなJsonにプロパティを追加する方法

はじめに

今回はSystem.Text.JsonでスキーマレスなJsonに対してプロパティを追加する方法を紹介したいと思います。

learn.microsoft.com

やり方

JsonDocumentは読み取り専用なので、JsonDocumentではなくJsonNodeを用いることで容易に実現できます。

learn.microsoft.com

// どんなスキーマ定義されているかよく分からないJson
string json = """
           {
                "Age" : 20,
                "Name" : "John",
                "Friend" : {
                    "School" : "Lucas"
                }
           }
           """;
        
// JsonNodeにパースする
JsonNode jsonNode = JsonNode.Parse(json);
        
// 「"Country" : "Japan"」というプロパティを追加する
jsonNode["Country"] = "Japan";

// 「"Friend":{"Company":"James"}」というプロパティを追加する
jsonNode["Friend"]["Company"] = "James";

// 「"Pet":["Dog","Cat"]」というプロパティを追加する
jsonNode["Pet"] = new JsonArray("Dog", "Cat");
        
// 中身を確認する
// {"Age":20,"Name":"John","Friend":{"School":"Lucas","Company":"James"},"Country":"Japan","Pet":["Dog","Cat"]}
Console.WriteLine(jsonNode.ToJsonString());