// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。

#contents

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();
     //}
 }


***ネストしたオブジェクト [#z717baf3]
 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 [#t58effec]
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":"子の名前"}]

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


***配列 [#g7464178]
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 [#ned7f75e]
配列を、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"}}
    ]
 }(整形してます)
 
 
[[JavaとJson-libの時>JSON/Json-libを使う/JavaからJSONへいろんな変換#ge97d174]]は
 {"name":"親の名前","id":0,
  "children":{"child1":{"name":"子の名前"},
              "child2":{"name":"子の名前"}
             }
 } (整形してます)
だったので、ちょっと違うみたいですね





----
この記事は
#vote(おもしろかった[5],そうでもない[0])
#vote(おもしろかった[12],そうでもない[0])

#comment
#topicpath


SIZE(10){現在のアクセス:&counter;}


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