前回 とは逆のパターン、Gistを生成したりする場合にPOSTするJSONの生成方法に関するメモ。
"files"の下に、 " ファイル名 " : { "content": " ファイルの内容 " }
を1つ以上含むオブジェクトを設定します。
やはり、" ファイル名 "の部分が不定となります。
{
"description": "the description for this gist",
"public": true,
"files": {
"file1.txt": {
"content": "String file1 contents"
},
"file2.txt": {
"content": "String file2 contents"
}
}
}
dynamic _result = new DynamicJson();
_result.description ="the description for this gist";
_result.@public = "true";
_result.files["file1.txt"] = new { content = "String file1 contents" };
_result.files["file2.txt"] = new { content = "String file2 contents" };
var json = _result.Tostring();
=> DynamicJsonにfilesの定義がありません。とおこられます。
dynamic _files = new DynamicJson();
_files["file1.txt"] = new { content = "String file1 contents"};
_files["file2.txt"] = new { content = "String file2 contents" };
var gistObj = new
{
description = "the description for this gist",
@public = "true",
files = _files
};
string json = DynamicJson.Serialize(gistObj);
=> DynamicJsonのプロパティがアイテムに入ってしまいます。
{
"description":"the description for this gist",
"public":true,
"files":{
"IsObject":true,
"IsArray":false
}
}
dynamic _result = new DynamicJson();
_result.description ="the description for this gist";
_result.@public = "true";
_result.files = new { }; //空のオブジェクトを生成!
_result.files["file1.txt"] = new { content = "String file1 contents" };
_result.files["file2.txt"] = new { content = "String file2 contents" };
var json = _result.Tostring();
=> これで欲しかったJSONが手に入ります
{
"description": "the description for this gist",
"public": true,
"files": {
"file1.txt": {
"content": "String file1 contents"
},
"file2.txt": {
"content": "String file2 contents"
}
}
}