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フィールドも、ちゃんとネストして変換されていますね。 IList †IListを追加しました。 public class Parent { public int id { get; set; } public string name { get; set; } public IList<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; } } これでやってみると、 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":"親の名前","children":[{"name":"子の名前"},{"name":"子の名前"}]} 配列childrenは "children":[{"name":"子の名前"},{"name":"子の名前"}] となり、JSONの配列になっていますね。 Dictionary †配列を、Dictionaryに変えてみます public class Parent { public int id { get; set; } public string name { get; set; } public IDictionary<string, Child> children { get; set; } } これでやってみます class Program { static void Main(string[] args) { var children = new Dictionary<string, Child>(); children.Add("child1", new Child() { name = "子の名前1" }); children.Add("child2", new Child() { name = "子の名前2" }); Parent parent = new Parent { id = 0, name = "親の名前", children = children }; var json = DynamicJson.Serialize(parent); Console.WriteLine(json); } } 結果 {"id":0,"name":"親の名前", "children":[ {"Key":"child1","Value":{"name":"子の名前1"}}, {"Key":"child2","Value":{"name":"子の名前2"}} ] }(整形してます) {"name":"親の名前","id":0, "children":{"child1":{"name":"子の名前"}, "child2":{"name":"子の名前"} } } (整形してます) だったので、ちょっと違うみたいですね この記事は 現在のアクセス:14441 |