如何将json字符串反序列化为我在运行时获得的类型的对象列表?

时间:2011-10-31 11:40:43

标签: c# serialization c#-4.0 deserialization

我想将json字符串反序列化为我在运行时获得的类型的对象列表。

例如:

我的json字符串是[{"id":"1", "name":"test"},{"id":"2", "name":"test2"}],我得到的类型是"Types.type1, types.dll",因此我需要将其反序列化为List<type1>。如果我将获得"Types.type2, types.dll"类型,那么我需要将其反序列化为List<type2>

我怎么能这样做?

1 个答案:

答案 0 :(得分: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]]")