17/01/27 22:50:37.80 +Ih6k9xI0.net
>>351
> それを動的にやって何がしたいのか激しく疑問
自分も質問文を書きながら、そう思われるだろうなと思っていました。
たぶん、こんなことをしたいと思いつく考え方が、そもそも間違いの可能性が高そうなのですが、
なぜこういうことを思いついたかというと、一つの問い合わせに対して返ってくるJSONの型が
複数あったりするので、どうやれば上手くまとまるかな? と考えたのがはじまり。
成功時→ {"person":{"name":"だれそれ","age":20}}
失敗時→ {"noresponse":{"message":"該当なし"}}
エラー→ {"error":{"number":1,"message":"error message."}}
頭の文字列(personなど)引っ張り出して、対応する型名(Person)をHashtableなんかから引っ張り出せばいいかなと。
hashtable.Add("person","Person");
hashtable.Add("error","Error");
...
object Json2Object(string json)
{
string typename = Regex.Match(json, @"\{""([^""]+)").Groups[1].Value
var o = JsonConvert.DeserializeObject<$$hashtable[typename]$$> (json);
return o;
}
呼び出した側では結局as is しますが、こんな発想自体ナンセンスですか?