У меня возникли проблемы с десериализацией Json, который возвращает api.Deserialize Json to List C#
Json является следующее:
{ "Result":[
{
"Id": 1,
"Type": "Type1"
},
{
"Id": 2,
"Type": "Type2"
}
]}
Я пытаюсь десериализации его в список этого типа:
public class ContactType
{
public int Id { get; set; }
public string Type { get; set; }
}
ReturnType используется ниже: Список < ContactType> и функция GetContactTypes называется следующим образом:
var test = await _items.GetContactTypes<List<ContactType>>(AuthToken.access_token);
Используя этот код:
public async Task<ReturnType> GetContactTypes<ReturnType>(string access_token)
{
try
{
Header = string.Format("Bearer {0}", access_token);
client.DefaultRequestHeaders.Add("Authorization", Header);
HttpResponseMessage response = await client.GetAsync(base_url + "contacttypes");
if (response.StatusCode == HttpStatusCode.OK)
{
return JsonConvert.DeserializeObject<ReturnType>(await response.Content.ReadAsStringAsync());
}
else
{
return default(ReturnType);
}
}
catch (Exception ex)
{
return default(ReturnType);
}
}
Но я всегда получаю эту ошибку:
Не можете десериализации объекта тока JSON (например, {"name": "value"}) в тип 'System.Collections.Generic.List`1', потому что для десериализации правильно требуется массив JSON (например, [1,2,3]).
Любая помощь приветствуется, спасибо.
Если вы создаете классы C# для этого JSON по адресу http://json2csharp.com/, вы увидите, что он создает два класса: 'Result' и' RootObject'.Ваш код не работает, потому что он пытается десериализовать JSON, чтобы напечатать 'List', когда он действительно имеет тип RootObject с содержащим 'List ' –
adaam