Я использую пакет XML2 JSON dart во Flutter, чтобы загрузить погоду и назначить ее отображаемым переменным. Пакет XML2 JSON распечатает все данные, но состояние неба содержит вложенные данные, как показано ниже:
<sky_condition sky_cover="OVC" cloud_base_ft_agl="4700"/>
Я просто не могу найти в документации пример того, как переходим к вложенным данным. Все остальные поля находятся на верхнем уровне, и их легко получить, как показано ниже:
<wind_speed_kt>4</wind_speed_kt>
Любая помощь будет принята с благодарностью !!?
Future<dynamic> getData(String icaoIdent) async {
try {
http.Response response = await http.get(link + icaoIdent);
parse(response.body);
xml2json.parse(response.body);
var jsondata = xml2json.toParker();
var mydata = json.decode(jsondata);
stationid = mydata["response"]["data"]["METAR"]["station_id"].toString();
rawmetar = mydata["response"]["data"]["METAR"]["raw_text"].toString();
obstime =
mydata["response"]["data"]["METAR"]["observation_time"].toString();
temp = mydata["response"]["data"]["METAR"]["temp_c"].toString();
windspeed =
mydata["response"]["data"]["METAR"]["wind_speed_kt"].toString();
if (windspeed == '0') {
windDS = 'Calm';
} else {
windDS = '$winddirection\u00B0' + ' @ ' + '$windspeed' + ' KTS';
}
dewpoint = mydata["response"]["data"]["METAR"]["dewpoint_c"].toString();
winddirection =
mydata["response"]["data"]["METAR"]["wind_dir_degrees"].toString();
elevation = mydata["response"]["data"]["METAR"]["elevation_m"].toString();
visibility = mydata["response"]["data"]["METAR"]["visibility_statute_mi"]
.toString();
altimeter = mydata["response"]["data"]["METAR"]["altim_in_hg"].toString();
fltcategory = mydata["response"]["data"]["METAR"]["flight_category"];
//SkyCondition ______
skycondition = mydata["response"]["data"]["METAR"]["sky_condition"];
return mydata;
} catch (e) {
print(e);
}
}
}