2016-03-24 1 views
0

haben den dynamischen Typ:JSON.NET deserialize zur Liste der Laufzeittyp

Type targetType; 
if (position.Length == 1) 
{ 
    targetType = typeof (Row); 
} 

if (position.Length == 4) 
{ 
    targetType = typeof (Field); 
} 

Danach Ich brauche die JSON deserialisieren dieser Art zur Liste:

List<targetType> 

Code:

var components = JsonConvert.DeserializeObject<List<targetType>>(include.components.ToString()); 

Wie ich Katze das mache?

+2

nicht genug Informationen. JSON nirgends. –

+0

Können Sie ein Beispiel für die JSON-Datei angeben, die Sie analysieren möchten? – ganchito55

Antwort

0

Sie können JsonConvert.DeserializeObject(String, Type) zusammen mit Type.MakeGenericType(Type[]) verwenden:

var components = (IList)JsonConvert.DeserializeObject(include.components.ToString(), typeof(List<>).MakeGenericType(new[] { targetType })); 

Wenn übrigens include.components ein JToken ist, wird es effizienter sein JToken.ToObject(Type) zu verwenden:

var components = (IList)include.components.ToObject(typeof(List<>).MakeGenericType(new[] { targetType }));