JSONから匿名型を作成しようとすると、あらかじめパラメータについて何も知らなくても、完全に解釈することができます(ヒントあり)。つまり、その値はint、文字列、または日付のように見えます。JSON.Netを匿名型にデシリアライズする方法は?
私がこれまで知っている唯一の方法は、あなたが事前知識を持っている匿名のタイプを作成することです。以下の.DeserializeAnonymousType(...)メソッドを参照してください。
これ以上の人はいますか?ありがとう。
var jsonString = "{\"user_id\": 1, \"user_type\": \"moderator\", \"name\": \"Fred\"}";
JToken root = JObject.Parse(jsonString);
var anonTemplate = new{user_id=0, user_type="", name="" };
var a = JsonConvert.DeserializeAnonymousType(root.ToString(), anonTemplate);
var b = JsonConvert.DeserializeObject<Object>(root.ToString()); // actually turns into a JsonObject which is something differet.
更新
私はdynamicduckをダウンロードし、それを少し遊んでいます。この奇妙なダイナミックな "ラッパー"アイデアは、私が必要とする方法(シリアル化可能なものなど)でBrianが可能であるか?
http://weblogs.asp.net/britchie/archive/2010/08/05/json-net-dynamic-extensions.aspx
http://weblogs.asp.net/britchie/archive/2010/08/03/dynamicduck-duck-typing-in-a-dynamic-world.aspx
.NET 4の場合、 'dynamic'オブジェクトに逆シリアル化でき、必要なプロパティに明示的にアクセスできるようにすることを前提としています。 – sll
どのオブジェクトがどのパラメータを持っているか、持ってる? – KallDrexx
@sll:例がありますか?動的な型に対してではありません。私は時折それらを使用しています。その場合、私の次の質問は、どのように動的からanon型に変換するのだろう。パフォーマンスは問題ではないので、いずれのパスでもうれしいですが、この場合は既存のライブラリーでは無名型が必要です。 – sgtz