2011-10-31 32 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

您可以使用DataContractJsonSerializerSystem.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框架如何命名泛型類型。這意味着這個通用類型有1個通用參數。例如字典,它是'2。 – Aliostad

相關問題