Вопрос может показаться немного запутанным, но я просто пытаюсь получить доступ к элементу внутри словаря. Словарь был изначально заключен в список, ключом которого была строка 'main'. Этот 'main' является частью json файла в этом формате:
{"coord":{"lon":151.21,"lat":-33.87},
"weather":[{"id":803,"main":"Clouds","description":"broken clouds","icon":"04n"}],
"base":"stations",
"main":{"temp":291.97,"feels_like":290.16,"temp_min":290.93,"temp_max":293.15,"pressure":1016,"humidity":56},
"visibility":10000,
"wind":{"speed":2.6,"deg":250},
"clouds":{"all":83},
"dt":1587639926,
"sys":{"type":1,"id":9600,"country":"AU","sunrise":1587587012,"sunset":1587626585},
"timezone":36000,"id":2147714,"name":"Sydney","cod":200}
Это класс, в который я анализирую файл json, помещая каждую часть файла json в отдельные классы или строки.
public class coord
{
public double lon { get; set; }
public double lat { get; set; }
}
public class weather
{
public int id { get; set; }
public string main { get; set; }
public string description { get; set; }
public string icon { get; set; }
}
public class main
{
public double temp { get; set; }
public double temp_min {get; set;}
public double temp_max { get; set; }
public int pressure { get; set; }
public int humidity { get; set; }
}
public class wind
{
public double speed { get; set; }
}
public class sys
{
public string country { get; set; }
}
public class Root
{
public coord coord { get; set; }
public List<weather> weather { get; set; }
public main main { get; set; }
public wind wind { get; set; }
public sys sys { get; set; }
public string country {get; set;}
public string name { get; set; }
}
}
Это код, в котором я пытаюсь получить доступ к значению 'icon' в разделе 'main' , но это дает мне ошибку : Невозможно применить индексирование с помощью [] к выражению типа 'WeatherModel.Weather' :
public static (string, string, double, string) LoadWeather(string city_a)
{
int cityId = obtain_Id(city_a);
if (cityId != 0)
{
using (WebClient web = new WebClient())
{
string json = new WebClient().DownloadString($"https://api.openweathermap.org/data/2.5/weather?id={cityId}&appid=67f9bc5970b49b875ccecec84f849300");
var items = JsonConvert.DeserializeObject<WeatherModel.Root>(json);
//Trying to acquire the icon from the weather list
string icon = items.weather[0]["icon"];
string url = $"http://openweathermap.org/img/wn/{icon}@2x.png";
string city = string.Format($"{items.name}");
string country = string.Format($"{items.sys.country}");
double temp = items.main.temp - 276;
//city = cityName;
//country = countryName;
//temp = temperature;
return (city, country, temp, url);
}
}
else
{
return ("0", "0", 0.0, "0");
}
}