2016-12-11 10 views
1

タイプをObjectのオブジェクトに知らないJSON文字列を逆シリアル化し、リフレクションを使用してそのプロパティにアクセスできるようにします。私はこのJson.NETを使用してJSON文字列をDeserializeする

object myObject = JsonConvert.DeserializeObject("{\'Id\':\'1\'}"); 

を使用する場合 myObjectのタイプはタイプJObjectであり、私はリフレクションを使用して、そのプロパティにアクセスすることはできませんよ。

Json.netやその他のJSONデシリアライザを使用する方法はありますか?

私はあなたが Dictionary<string,string>expandoobjectIDictionary<string,object>にもキャスト可能)のいずれかにオブジェクトをデシリアライズすることができ、その後、あなたが辞書を介してそれらを取得することができ、プロパティを取得するためにリフレクションを使用する必要はありません。考える
+1

これは、このの重複のように思えるします。http:/ /stackoverflow.com/questions/3142495/deserialize-json-into-c-sharp-dynamic-object – scotru

+1

またはJSON.NETでこれを行う:http://stackoverflow.com/questions/4535840/deserialize-json-object-into- dynamic-object-using-json-net – scotru

+0

@scotru私も動的にしようとしました。私の主張は、リフレクションを使用してそのプロパティにアクセスする必要があることです。生成された動的オブジェクトもタイプJObject –

答えて

1

これは、あなたがそれ自体はリフレクションを使用することはできませんが、ExpandoObjectはあなたがプロパティを反復させない:

 string json = "{\'Id\':\'1\'}"; 
     var converter = new ExpandoObjectConverter(); 
     dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(json, converter); 

     IDictionary<string, object> dict = (IDictionary<string, object>)obj; 
     foreach (string key in dict.Keys) 
     { 
      Console.WriteLine(key); 
     } 
関連する問題