方法"反序列化"没有重载需要 2 个参数?



我试图用返回JSON的GET方法调用Web API。我的代码正常工作,并将我的JSON数据返回。但是,我面临的挑战是对数据的挑选。我的代码是:(.NET Framework 3.5)

WebRequest req = WebRequest.Create("url");
req.Method = "GET";
req.ContentType = "application/json; charset=utf-8";
WebResponse resp = req.GetResponse();
Stream stream = resp.GetResponseStream();
StreamReader re = new StreamReader(stream);
String json = re.ReadToEnd();

上面的代码正常工作并返回数据。问题在下线:

wrapper w = (wrapper)new JavaScriptSerializer().Deserialize(json, typeof(wrapper));

它显示错误:

方法" deserialize'没有超载,取2个参数。

我该怎么办?预先感谢。

JavaScriptSearializer自版本3.5以来可用,但版本3.5中没有Deserialize方法的过载,可用于2个参数。自版4.0版以来,有2个参数的过载。3.5只有一个Deserialize方法,您需要通过传递通用类型而不是第二个参数来使用。

wrapper w = (wrapper)new JavaScriptSerializer().Deserialize<wrapper>(json);

这是有关您要使用的方法的文档。如果您滚动到页面底部,则有版本信息部分,您可以在其中找到此方法可用,因为版本4.0

您是否尝试过newtonsoft.json lib?

using Newtonsoft.Json;

您可以像这样做

wrapper w = JsonConvert.DeserializeObject<wrapper>(json);

最新更新