如何在C#中根据类名反序列化对象列表?
解决方案
要反序列化JSON数组为对应类的列表,只需基于你找到的单个对象类型,创建泛型List<T>的类型后传入反序列化方法即可,具体修改如下:
修改后的核心代码
// 获取单个对象的目标类型 Type objValueType = ByName(this.className); // 创建绑定到目标类型的泛型List<T>类型 Type listType = typeof(List<>).MakeGenericType(objValueType); // 反序列化JSON数组为对应类型的列表 object deserializedList = JsonConvert.DeserializeObject(json, listType);
关键说明
typeof(List<>)获取的是泛型列表的开放构造类型,通过MakeGenericType(objValueType)将其绑定到你动态获取的对象类型,得到具体的List<YourTargetType>类型。- 若需要反序列化为数组而非List,可改用
objValueType.MakeArrayType()创建数组类型,代码示例:Type arrayType = objValueType.MakeArrayType(); object deserializedArray = JsonConvert.DeserializeObject(json, arrayType);
完整调用示例
结合你原有的ByName方法,完整调用逻辑如下:
string json = "[{...}, {...}]"; // 你的JSON数组字符串 Type objValueType = ByName(this.className); Type listType = typeof(List<>).MakeGenericType(objValueType); object result = JsonConvert.DeserializeObject(json, listType); // 若需后续操作,可通过反射遍历列表元素,或根据业务场景尝试强转
内容的提问来源于stack exchange,提问作者a-x-i
相关产品推荐
相关产品推荐

