Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#将JSON反序列化为任何类型的方法_C#_Json_Javascriptserializer - Fatal编程技术网

C#将JSON反序列化为任何类型的方法

C#将JSON反序列化为任何类型的方法,c#,json,javascriptserializer,C#,Json,Javascriptserializer,我有这个方法(第二段代码) 将任何json转换为c sharp对象,效果很好,但是 我想对他做什么 能够告诉方法她需要投射到哪种类型的对象 //not real code public static object JSONToObj(string i_json, typeof(Home)) //will return an Home object //not real code //real code public static object JSONToObj(string i_jso

我有这个方法(第二段代码) 将任何json转换为c sharp对象,效果很好,但是

我想对他做什么 能够告诉方法她需要投射到哪种类型的对象

//not real code

public static object JSONToObj(string i_json, typeof(Home)) //will return an Home object

//not real code

//real code

public static object JSONToObj(string i_json)
{
     serializer = new JavaScriptSerializer();
     object io_obj = serializer.Deserialize<object>(i_json);

     return io_obj;
}

//real code
//不是真正的代码
公共静态对象jsontobj(字符串i_json,typeof(Home))//将返回一个Home对象
//非真实代码
//实码
公共静态对象JSONTOBJ(字符串i_json)
{
serializer=新的JavaScriptSerializer();
object io_obj=序列化程序。反序列化(i_json);
返回io_obj;
}
//实码
公共静态T JSONTOBJ(字符串i\u json)
{
var serializer=新的JavaScriptSerializer();
T io_obj=序列化程序。反序列化(i_json);
返回io_obj;
}
你可以这样称呼它:

Home h = JSONToObj<Home>(json);
Home h=jsontobj(json);

我应该如何调用此方法?@dotnetom您需要为要反序列化的更新类型添加一个约束
where T:new()
。对于类型
t
@YuvalItzchakov,您不能返回
对象
。如果是这种情况,
反序列化
方法不会有同样的约束吗?但是它没有:@YuvalItzchakov-如果反序列化有new()限制,那么这里也需要相同的限制
Home h = JSONToObj<Home>(json);