110,896
社区成员
发帖
与我相关
我的任务
分享
根据类名字符串,将json字串反序列化为对应的对象
string className = "employee";
Type type = Type.GetType(className);
var emp = JsonConvert.DeserializeObject<type>(json);
思路是这个意思,但实现不了,哪位高手解答一下
首先,我们假设你能实现(当然肯定能实现), 你得到的emp是什么类型? 因为你反序列出来的东西 是动态的.
那么你的emp类型一定是object的. 那你得没办法.出来任何东西.最终要干啥呢? 直接输出json ? 没意义...
既然没意义 那么你返回的object类型 或者其他jobject类型 有什么区别呢? 你的类型又没办法取值 还得动态.
那还不如 jobject 还能直接使用索引取值呢 是吧.
既然你非得要根据类型实现..我下面有一段代码.
var json = GetJson(new { id = 111, name = "222" });
var scriptSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var type = Type.GetType("LocalSQLManager.Form1+abc");
var method = scriptSerializer.GetType().GetMethod("Deserialize", new[] { typeof(string) }).MakeGenericMethod(type);
var obj = method.Invoke(scriptSerializer, new object[] { json });
Console.WriteLine(obj);
实现了你所谓的"动态类型"的反序列化.
但是我还是保持我之前的意见,,你实际需求是什么...