2011-10-31 10 views
1

jsonの文字列を逆シリアル化して、実行時に取得するオブジェクトのリストにしたいとします。例えばjsonの文字列を逆シリアル化して、どのタイプのオブジェクトを実行時に取得するのか?

私のJSON文字列が[{"id":"1", "name":"test"},{"id":"2", "name":"test2"}]であり、私が得るタイプが"Types.type1, types.dll"あるので、私はList<type1>にそれをデシリアライズする必要があります。タイプ"Types.type2, types.dll"を取得してデシリアライズする必要がある場合List<type2>

どうすればいいですか?

答えて

2

あなたは以下の使用、実行時にそれを持っていることの問題を解決するためにDataContractJsonSerializer

System.Runtime.Serialization
public class Foo 
{ 
    public string Bar { get; set; } 
    public int Baaz { get; set; } 
} 


class Program 
{ 
    static void Main(string[] args) 
    { 
     DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<Foo>)); 
     MemoryStream ms = new MemoryStream(
      Encoding.UTF8.GetBytes("[{\"Bar\":\"Bar\",\"Baaz\":2}]")); 

     var list = (List<Foo>)serializer.ReadObject(ms); 

     Console.WriteLine(list.Count); 
    } 
} 

を使用することがあります。

Type.GetType("System.Collections.Generic.List`1[[TestDll.TestType, TestDll]]") 
+0

'List'1'は何を意味していますか? – theateist

+0

これは、.NET Frameworkがジェネリック型に名前を付ける方法です。これは、このジェネリック型に1つのジェネリックパラメータがあることを意味しますたとえば、辞書の場合は '2です。 – Aliostad

関連する問題