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

时间:2018-01-12 22:02:54

标签: c# json json.net

我可能正在接近这个错误,但我有一个HTTP端点,它将接收带有匿名数据对象的JSON有效负载和一个名称参数,用于定义应该转换为什么类型。问题是我不太确定如何动态反序列化它以接受该类型。这是我到目前为止所尝试的内容。

// 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());

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你可以试试;

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

另外,你不能使用任何类型;

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

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

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