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を追加しました。
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の配列になっていますね。
この記事は
現在のアクセス:14160