|
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":"子の名前"}
}
} (整形してます)
だったので、ちょっと違うみたいですね この記事は 現在のアクセス:14778 |