2015-09-05 16 views
1

我正在研究ASP.NET MVC5 Web应用程序+ EF6.0。我有以下异步操作方法。DownloadDataTaskAsync&JsonConvert.DeserializeObject。将引发以下错误: - 无法转换无法从'byte []'转换为'字符串'

public ActionResult ScanServer(string tokenfromt, string FQDN) 
{ 
    using (WebClient wc = new WebClient()) 
    { 
     string url = currentURL + "resources/" + passwordmanagerResourceID + 
        "/accounts/" + passwordmanagerAccountID + 
        "/password?AUTHTOKEN=" + pmtoken; 

     var json = await wc.DownloadDataTaskAsync(url); 
     resourceAccountPasswordListInfo = 
      JsonConvert.DeserializeObject<ResourceAccountPasswordInfo>(json); 
    } 
} 

public class ResourcesInfo 
{ 
    public Operation operation { get; set; } 
} 

但是这引起了以下例外。

错误1关于 'Newtonsoft.Json.JsonConvert.DeserializeObject(字符串)' 最好重载的方法匹配具有一些无效参数C:\用户..... \的Visual Studio 2012 \项目\ tScanningFinal \ tScanningFinal \ Controllers \ HomeController.cs 155 63 tScanningFinal

错误2参数1:无法从'byte []'转换为'string'C:\ Users \ M ...... \ Visual Studio 2012 \ Projects \ tScanningFinal \ tScanningFinal \ Controllers \ HomeController.cs 155 122 tScanningFinal

+0

你想要反序列化什么? – beautifulcoder

+0

@beautifulcoder我想反序列化一个模型类的josn对象。这里是模型类: - public class ResourcesInfo { public operation operation {get;组; } } –

+2

['WebClient.DownloadDataTaskAsync'](https://msdn.microsoft.com/en-us/library/Hh138334%28v=VS.110%29.aspx)返回一个字节数组。也许你想['WebClient.DownloadStringAsync'](https://msdn.microsoft.com/en-us/library/ms144202%28v=vs.110%29.aspx)? – dbc

回答

1

正如@dbc所指出的,这是一个打字问题。 DeserializeObject<T>(string value)需要字符串参数而不是字节数组:JsonConvert.DeserializeObject Method (String)

你有两种选择,要么:

JsonConvert.DeserializeObject<ResourceAccountPasswordInfo>(json.ToString()); 

OR

var json = await wc.DownloadStringAsync(url); 

此外,确保JSON是通过调试工具合法的。