Top / JSON / DynamicJSON / C#からJSONへいろんな変換

JSON/Json-libを使う/JavaからJSONへいろんな変換 ではJavaからJSONへいろいろ変換してみましたが、次に、C#からJSONへ変換してみます。

Javaでやったときとほぼ同様の以下のような親子モデルで、ネストしたオブジェクトが正しく変換されるか、配列やListやSetなどが正しく変換されるか試してみます。

public class Parent
{
    public int id { get; set; }
    public string name { get; set; }
    public Child child { get; set; }
    //public String toString()
    //{
    //return new ToStringBuilder(this).
    //append("id", getId()).append("name",
    //getName()).append("child", getChild()).toString();
    //}
}
public class Child
{
    public string name { get; set; }
    //public String toString()
    //{
    //return new ToStringBuilder(this)
    //.append("name", getName()).toString();
    //}
}

ネストしたオブジェクト

class Program
{
    static void Main(string[] args)
    {
        Child child = new Child { name = "子の名前" };
        Parent parent = new Parent { id = 0, name = "親の名前", child = child };

        var json = DynamicJson.Serialize(parent);
        Console.WriteLine(json);
    }
}

結果

{"id":0,"name":"親の名前","child":{"name":"子の名前"}}

{"フィールド名":value}というJSON形式に変換されました。Childクラスであるchildフィールドも、ちゃんとネストして変換されていますね。

List

Listを追加しました。

public class Parent
{
    public int id { get; set; }
    public string name { get; set; }
    public List<Child> children { get; set; }
    //public Child child { get; set; }
}

これでやってみると、、

class Program
{
    static void Main(string[] args)
    {
        var children = new List<Child>();
        children.Add(new Child { name = "子の名前" });
        children.Add(new Child { name = "子の名前" });
        Parent parent = new Parent { id = 0, name = "親の名前", children = children };

        var json = DynamicJson.Serialize(parent);
        Console.WriteLine(json);
    }
}

結果

{"id":0,"name":"親の名前","children":[{"name":"子の名前"},{"name":"子の名前"}]}

childrenフィールドは

"children":[{"name":"子の名前"},{"name":"子の名前"}]

というように配列表現に変換されていますね。まあ想定通りですね。

配列

Listを配列にしました。

public class Parent
{
    public int id { get; set; }
    public string name { get; set; }
    public Child[] children { get; set; }
    //public Child child { get; set; }
    //public String toString()
    //{
    //return new ToStringBuilder(this).
    //append("id", getId()).append("name",
    //getName()).append("child", getChild()).toString();
    //}
}

これでやってみると、

class Program
{
    static void Main(string[] args)
    {
        Child[] children = new Child[] {
            new Child { name = "子の名前" },
            new Child { name = "子の名前" }
        };
        Parent parent = new Parent { id = 0, name = "親の名前", children = children };

        var json = DynamicJson.Serialize(parent);
        Console.WriteLine(json);

        // {"id":0,"name":"親の名前","child":{"name":"子の名前"}}
        // {"child":{"name":"子の名前"},"name":"親の名前","id":0}
    }
}

結果

{"id":0,"name":"親の名前","children":[{"name":"子の名前"},{"name":"子の名前"}]}

配列childrenは

"children":[{"name":"子の名前"},{"name":"子の名前"}]

となり、JSONの配列になっていますね。


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / JSON / DynamicJSON / C#からJSONへいろんな変換

現在のアクセス:14160


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS