我目前正在從事WinRT應用程序和API自服務,該服務似乎很好。Json轉換列表鑄造錯誤
我正在使用json來傳輸我的數據。我沒有問題序列化我想要傳輸的類的實例,但問題出現時,我想解串器。
這裏的類:
public class DtoDirectory
{
public string Name { get; set; }
public string Path { get; set; }
public List<string> DirectoryIcon { get; set; }
}
這裏是我寫操縱JSON
public class SerializeHelper
{
public static T Deserialize<T>(string value) where T : class
{
try
{
var ret = JsonConvert.DeserializeObject<T>(value);
return ret;
}
catch(Exception e)
{
return null;
}
}
public static string Serialize<T>(T type) where T : class
{
try
{
var output = JsonConvert.SerializeObject(type);
return output;
}
catch (Exception)
{
return null;
}
}
}
這裏的數據時,它來自API的幫助:
"[{"Name":"ANNONCES LEGALES","Path":"C:\\Test\\ANNONCES LEGALES","DirectoryIcon":["C:\\Test\\ANNONCES LEGALES\\fond.png","C:\\Test\\ANNONCES LEGALES\\icon.png"]},{"Name":"CONSEIL MUNICIPAL","Path":"C:\\Test\\CONSEIL MUNICIPAL","DirectoryIcon":["C:\\Test\\CONSEIL MUNICIPAL\\fond.png","C:\\Test\\CONSEIL MUNICIPAL\\icon.png"]},{"Name":"DIVERS","Path":"C:\\Test\\DIVERS","DirectoryIcon":["C:\\Test\\DIVERS\\fond.png","C:\\Test\\DIVERS\\icon.png"]},{"Name":"ELECTIONS","Path":"C:\\Test\\ELECTIONS","DirectoryIcon":["C:\\Test\\ELECTIONS\\fond.png","C:\\Test\\ELECTIONS\\icon.png"]},{"Name":"ETAT CIVIL","Path":"C:\\Test\\ETAT CIVIL","DirectoryIcon":["C:\\Test\\ETAT CIVIL\\fond.png","C:\\Test\\ETAT CIVIL\\icon.png"]},{"Name":"URBANISME","Path":"C:\\Test\\URBANISME","DirectoryIcon":["C:\\Test\\URBANISME\\fond.png","C:\\Test\\URBANISME\\icon.png"]}]"
最後的錯誤:
{"Could not cast or convert from System.String to System.Collections.Generic.IList`1[DTO.DtoDirectory]."}
Error converting value to type 'System.Collections.Generic.IList`1[DTO.DtoDirectory]'. Path '', line 1, position 1027.
編輯:
這裏我所說的解串器的代碼:
try
{
var client = new HttpClient();
var uri = new Uri("http://localhost:1234/api/document/ListDirectoryRoot?pathDirecory=C:\\Test\\Chasse");
var request = new HttpRequestMessage(HttpMethod.Get, uri);
var res = await client.SendAsync(request);
var content = await res.Content.ReadAsStringAsync();
var test = SerializeHelper.Deserialize<Wrapper >(lol);
return content;
}
catch (Exception)
{
return null;
}
public class Wrapper
{
public List<DtoDirectory> list {get;set;}
}
我很遺憾沒有成功找出錯誤.. 感謝您的幫助!
您可以在您的問題中添加實際使用/調用SerializeHelper方法的代碼嗎? – 2014-10-06 09:02:39
什麼是「包裝」?你能不能也請發貼'Wrapper'類。 – Michael 2014-10-06 09:08:21
我做了更改;) – bottus 2014-10-06 09:11:33