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

本文关键字:类型 运行时 列表 对象 反序列化 json 字符串 | 更新日期: 2023-09-27 18:12:46

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

例如:

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

我该怎么做?

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

可以在System.Runtime.Serialization中使用DataContractJsonSerializer

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]]")