Десериализация c#
Пишу консольное приложение которое будет делать запрос к api и полученный ответ выводить на консоль. Но не могу отформатировать вывод, api выдает много ненужной инфы, не могу понять как это правильно десериализовать
Console.WriteLine("input country name");
string name = Console.ReadLine();
var client = new RestClient("https://restcountries-v1.p.rapidapi.com/name/" + name);
var request = new RestRequest(Method.GET);
request.AddHeader("x-rapidapi-host", "restcountries-v1.p.rapidapi.com");
request.AddHeader("x-rapidapi-key", "7ad6273cfamshbec0ad25232fe87p1ade6ejsnd0fa171f378e");
IRestResponse response = client.Execute(request);
string stream = response.Content;
CountryInfo countryInfo = JsonConvert.DeserializeObject<CountryInfo>(stream);
Console.WriteLine(countryInfo.Name, countryInfo.CountryCode, countryInfo.Capital, countryInfo.Area, countryInfo.Population, countryInfo.Region);
"CountryInfo" - класс, в котором я описал все необходимые мне сущности с геттерами сеттерами, но привести ответ к этому виду никак не получается.
public class CountryInfo
{
[DeserializeAs(Name = "name")]
public string Name { get; set; }
[DeserializeAs(Name = "numericCode")]
public int CountryCode { get; set; }
[DeserializeAs(Name = "capital")]
public string Capital { get; set; }
[DeserializeAs(Name = "area")]
public float Area { get; set; }
[DeserializeAs(Name = "popilation")]
public decimal Population { get; set; }
[DeserializeAs(Name = "region")]
public string Region { get; set; }
}
То, что записалось в переменную, отвечающую за ответ api
[
{
"name": "United States",
"topLevelDomain": [
".us"
],
"alpha2Code": "US",
"alpha3Code": "USA",
"callingCodes": [
"1"
],
"capital": "Washington, D.C.",
"altSpellings": [
"US",
"USA",
"United States of America"
],
"region": "Americas",
"subregion": "Northern America",
"population": 321645000,
"latlng": [
38,
-97
],
"demonym": "American",
"area": 9629091,
"gini": 48,
"timezones": [
"UTC-12:00",
"UTC-11:00",
"UTC-10:00",
"UTC-09:00",
"UTC-08:00",
"UTC-07:00",
"UTC-06:00",
"UTC-05:00",
"UTC-04:00",
"UTC+10:00",
"UTC+12:00"
],
"borders": [
"CAN",
"MEX"
],
"nativeName": "United States",
"numericCode": "840",
"currencies": [
"USD",
"USN",
"USS"
],
"languages": [
"en"
],
"translations": {
"de": "Vereinigte Staaten von Amerika",
"es": "Estados Unidos",
"fr": "États-Unis",
"ja": "アメリカ合衆国",
"it": "Stati Uniti D'America"
},
"relevance": "3.5"
}
]
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
@EvgeniyZ прав
Это же массив...
И мне кажется, что должно быть что-то типа такого:
List<CountryInfo> countryList = JsonConvert.DeserializeObject<List<CountryInfo>>(stream);
foreach (CountryInfo countryInfo in countryList)
{
Console.WriteLine(countryInfo.Name, countryInfo.CountryCode, countryInfo.Capital, countryInfo.Area, countryInfo.Population, countryInfo.Region);
}