Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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
VS2010中的C#.Net 4.0反序列化实时类型的json而不使用类型_C#_.net_Json_Visual Studio 2010_Msdn - Fatal编程技术网

VS2010中的C#.Net 4.0反序列化实时类型的json而不使用类型

VS2010中的C#.Net 4.0反序列化实时类型的json而不使用类型,c#,.net,json,visual-studio-2010,msdn,C#,.net,Json,Visual Studio 2010,Msdn,我有一些代码来完成http请求处理器的某些部分。当某些web请求传入时,例如PUT,带有附加的xml或json,我必须将有效负载(字符串)转换为各种类型(或者无论如何尝试),以查看哪些注册方法与URL/提供的类型对匹配 我使用的是VS2010,对于xml,它是直接的,因为反序列化方法将类型作为参数。我有我试图实时匹配的类型。但是,对于JSON转换,该方法是模板化的(泛型可能——我不知道C,那好,我通常是C++人)。无论如何,我不能将变量放在编译时类型所在的类型表达式中 此外,尽管MSDN()显示

我有一些代码来完成http请求处理器的某些部分。当某些web请求传入时,例如PUT,带有附加的xml或json,我必须将有效负载(字符串)转换为各种类型(或者无论如何尝试),以查看哪些注册方法与URL/提供的类型对匹配

我使用的是VS2010,对于xml,它是直接的,因为反序列化方法将类型作为参数。我有我试图实时匹配的类型。但是,对于JSON转换,该方法是模板化的(泛型可能——我不知道C,那好,我通常是C++人)。无论如何,我不能将变量放在编译时类型所在的类型表达式中

此外,尽管MSDN()显示JavaScriptSerializer有一个反序列化(string,Type)方法(),但在VS2010中,该方法并不存在

JavaScriptSerializer的代码,当我右键单击并请求“转到定义”时出现

json编码数据的实际类型存储在resource.PayloadType中,如果我打印出resource.PayloadType.Name,我会发现它是正确的。然而,那个反序列化方法并不存在(出于某种原因),我只剩下这个

JavaScriptSerializer json_serializer = new JavaScriptSerializer();
obj payload = json_serializer.Deserialize<resource.PayloadType>(payloadStr);
JavaScriptSerializer json_serializer=new JavaScriptSerializer();
obj payload=json_序列化程序。反序列化(payloadStr);
当然,这不会编译,因为不能将变量放在编译时类型所在的位置。当我使用DeserializeObject进行转换时,我得到某种类型的泛型字典类,而不是我期望的类型,并且字典和我期望的类型之间没有转换

MSDN网站有错吗?其他人在.NET4.0中有反序列化方法吗?我需要更新一些东西来获得另一个补丁还是什么


我正在考虑将字符串转换为流,并使用DataContractJsonSerializer进行转换,但我觉得我的设置可能有误,或者与MSDN网站冲突。或者,是否有其他简单的方法将类型变量转换为类型以放入?MSDN是正确的,而VS2010是错误的(设置为mono而不是.NET 4.0)。Mono 2.10.8显然没有完全实现.NET4,并且缺少该方法


将每个项目的目标框架切换到.NET framework 4。可能必须删除mono directory dll的引用,并在切换框架后重新添加它们。

使用JSON.Net和
JObject
。这是否意味着MSDN错误,或者我的VS 2010设置错误?我想知道您引用的Systems.Web.Extensions.dll是否符合标准.Net框架,因为基于目录,它看起来像是为Mono构建的。如果您取消引用该.dll并从标准配置文件中重新引用该.dll,它可能会出现。当然,如果你真的在为Mono做设计,那也没用。@BenJaspers-好主意。我曾经为mono做过一段时间的开发,并切换到了4.0配置文件,但有些东西仍然存在。我修复了引用路径//C:\Program Files(x86)\reference Assembly\Microsoft\Framework\.NETFramework\v4.0\System.Web.Extensions.dll,并且子项目仍然设置为mono。一旦我解决了这些问题,我现在看到了所需的方法。公共对象反序列化(字符串输入,类型targetType);谢谢
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
obj payload = json_serializer.Deserialize(payloadStr, resource.PayloadType)
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
obj payload = json_serializer.Deserialize<resource.PayloadType>(payloadStr);