【发布时间】:2020-12-01 15:55:21
【问题描述】:
我正在尝试反序列化来自 API 的响应,并在运行时检索类型:
var modelType = Type.GetType($"Namespace.{itemname}").GetType();
然后我调用一个泛型方法,将类型传入(带反射)。在 API 调用之后,我尝试从响应中反序列化它:
var obj= await response.Content.ReadAs<List<T>>();
但它给出了这个错误:
无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型“System.RuntimeType”,因为该类型需要 JSON 字符串值才能正确反序列化。
我也尝试将其读取为字符串,然后使用 JsonConvert
var str = await response.Content.ReadAsStringAsync();
var obj = JsonConvert.DeserializeObject<List<T>>(str);
同样的错误。有人知道怎么做吗?谢谢!
【问题讨论】:
-
您的问题中的
T是什么?它来自哪里? -
T 总是一个简单的类(我想用 T 因为我有很多)
-
你的T是modelType变量吗?
-
我 认为
Type.GetType($"Namespace.{itemname}").GetType();是错误的:您解析类型,然后在“RuntimeType”类型的实例上调用“GetType”,因此您会得到类似类型的类型。您可能应该仔细检查该部分或发布更完整的示例? -
@A.Chiesa 你是对的!现在正在工作!非常感谢!