В настоящее время я работаю над приложением WinRT и самоорганизованным API в сервисе, служба, похоже, отлично работает.Json converting List cast error
Я работаю с 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.
EDIT:
код, где я называю десериализатор:
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? –
А что такое 'Wrapper'? Не могли бы вы также разместить класс 'Wrapper'. – Michael
Я вносил изменения;) – bottus