- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#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(おもしろかった[1],そうでもない[0])
#vote(おもしろかった[2],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}