按名称获取类型并将反序列化的 json 数据强制转换为该对象



我可能不正确地接近了这一点,但我有一个HTTP端点,它将接收一个JSON有效负载,其中包含一个匿名数据对象和一个定义它应该转换为哪种类型的name参数。问题是我不太确定如何动态反序列化它以接受该类型。这是我到目前为止尝试过的。

// Get request body
RequestBodyObject body = await req.Content.ReadAsAsync<RequestBodyObject>();
var assemblyName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
Type typeObject = Type.GetType($"MyNamespace, {assemblyName}");
// Cast data obtained
var specificObject = JsonConvert.DeserializeObject<typeObject>(body.Data.ToString());

当然,我的问题是我不能在 Json 转换行的 <> 部分之间使用 typeObject。如果我在那个地方指定一个静态对象,我的代码工作正常,但我正在寻找一个动态解决方案,因为来自某个集合的任何类型的对象都可以很好地传递。

有什么想法吗?

你可以试试;

var specificObject = JsonConvert.DeserializeObject(body.Data.ToString(),typeObject);

此外,您不会获得任何类型;

Type typeObject = Type.GetType($"MyNamespace, {assemblyName}");

您应该指定类型名称,它看起来像;

var typeObject = System.Reflection.Assembly.GetExecutingAssembly().GetType("JsonObject");

相关内容

  • 没有找到相关文章

最新更新