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

时间:2017-10-03 21:47:30

标签: c# .net winforms asp.net-web-api serialization

我正在尝试使用返回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));

显示错误:

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

我该怎么办?提前谢谢。

2 个答案:

答案 0 :(得分:0)

从版本3.5开始,<。> JavaScriptSearializer在.Net Framework中可用,但在版本3.5中,没有Deserialize方法的重载,它带有2个参数。从版本4.0开始,可以使用2个参数进行重载。 3.5只有一个Deserialize方法,您需要通过传递泛型类型而不是第二个参数来使用。

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

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

答案 1 :(得分:0)

你试过Newtonsoft.Json lib吗?

using Newtonsoft.Json;

你可以这样做

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