Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将json字符串反序列化到运行时获取的对象列表中?_C#_Serialization_C# 4.0_Deserialization - Fatal编程技术网

C# 如何将json字符串反序列化到运行时获取的对象列表中?

C# 如何将json字符串反序列化到运行时获取的对象列表中?,c#,serialization,c#-4.0,deserialization,C#,Serialization,C# 4.0,Deserialization,我想将json字符串反序列化为我在运行时获得的对象类型列表 例如: 我的json字符串是[{“id”:“1”,“name”:“test”},{“id”:“2”,“name”:“test2”}],而我得到的类型是“Types.type1,Types.dll”,所以我需要将其反序列化为List。如果我将获得类型“Types.type2,Types.dll”,那么我需要将其反序列化到列表中 我如何做到这一点?您可以在System.Runtime.Serialization中使用DataContract

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

例如:

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


我如何做到这一点?

您可以在
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);
    }
}

这就是.NET framework命名泛型类型的方式。这意味着此泛型类型有1个泛型参数。例如,对于字典,它是'2'。
Type.GetType("System.Collections.Generic.List`1[[TestDll.TestType, TestDll]]")