我正在通过url json做一个与气候有关的学习项目,我得到了你的 数据并将其显示在应用程序中
我正在尝试从json获取数据。当我尝试获取数据时,我收到 一个错误:类型’_TypeError’不是类型’Widget’的子类型,我想 解决这个问题,感谢您提供的最小帮助。
我的JSON:
{ "metcheckData": { "forecastLocation": { "forecast": [ { "temperature": "18", "dewpoint": "15", "rain": "0", "freezinglevel": "4656", "uvIndex": "0", "totalcloud": "8", "lowcloud": "8", "medcloud": "0", "highcloud": "0", "humidity": "84", "windspeed": "9", "meansealevelpressure": "1018.02", "windgustspeed": "11", "winddirection": "28.7724", "windletter": "NNE", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "3", "weekday": "Tuesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "N", "utcTime": "2018-06-19T23:00:00.00" }, { "temperature": "18", "dewpoint": "15", "rain": "0", "freezinglevel": "4663", "uvIndex": "0", "totalcloud": "8", "lowcloud": "8", "medcloud": "0", "highcloud": "0", "humidity": "85", "windspeed": "9", "meansealevelpressure": "1018.26", "windgustspeed": "11", "winddirection": "29.4946", "windletter": "NNE", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "N", "utcTime": "2018-06-20T00:00:00.00" }, { "temperature": "18", "dewpoint": "15", "rain": "0", "freezinglevel": "4666", "uvIndex": "0", "totalcloud": "8", "lowcloud": "8", "medcloud": "0", "highcloud": "0", "humidity": "86", "windspeed": "9", "meansealevelpressure": "1018.18", "windgustspeed": "10", "winddirection": "30.0925", "windletter": "NNE", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "N", "utcTime": "2018-06-20T01:00:00.00" }, { "temperature": "18", "dewpoint": "15", "rain": "0", "freezinglevel": "4668", "uvIndex": "0", "totalcloud": "11", "lowcloud": "11", "medcloud": "0", "highcloud": "0", "humidity": "87", "windspeed": "8", "meansealevelpressure": "1017.79", "windgustspeed": "10", "winddirection": "30.761", "windletter": "NNE", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "N", "utcTime": "2018-06-20T02:00:00.00" }, { "temperature": "17", "dewpoint": "15", "rain": "0", "freezinglevel": "4671", "uvIndex": "0", "totalcloud": "12", "lowcloud": "12", "medcloud": "0", "highcloud": "0", "humidity": "87", "windspeed": "8", "meansealevelpressure": "1017.36", "windgustspeed": "9", "winddirection": "31.0844", "windletter": "NNE", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "N", "utcTime": "2018-06-20T03:00:00.00" }, { "temperature": "17", "dewpoint": "15", "rain": "0", "freezinglevel": "4673", "uvIndex": "0", "totalcloud": "11", "lowcloud": "11", "medcloud": "0", "highcloud": "0", "humidity": "88", "windspeed": "8", "meansealevelpressure": "1017.04", "windgustspeed": "9", "winddirection": "31.4161", "windletter": "NNE", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "N", "utcTime": "2018-06-20T04:00:00.00" }, { "temperature": "17", "dewpoint": "15", "rain": "0", "freezinglevel": "4671", "uvIndex": "0", "totalcloud": "11", "lowcloud": "11", "medcloud": "0", "highcloud": "0", "humidity": "89", "windspeed": "7", "meansealevelpressure": "1016.89", "windgustspeed": "9", "winddirection": "31.2326", "windletter": "NNE", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "N", "utcTime": "2018-06-20T05:00:00.00" }, { "temperature": "17", "dewpoint": "15", "rain": "0", "freezinglevel": "4668", "uvIndex": "0", "totalcloud": "10", "lowcloud": "10", "medcloud": "0", "highcloud": "0", "humidity": "91", "windspeed": "8", "meansealevelpressure": "1017.04", "windgustspeed": "9", "winddirection": "30.2947", "windletter": "NNE", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "N", "utcTime": "2018-06-20T06:00:00.00" }, { "temperature": "17", "dewpoint": "15", "rain": "0", "freezinglevel": "4664", "uvIndex": "0", "totalcloud": "9", "lowcloud": "9", "medcloud": "0", "highcloud": "0", "humidity": "92", "windspeed": "8", "meansealevelpressure": "1017.35", "windgustspeed": "10", "winddirection": "29.0404", "windletter": "NNE", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "D", "utcTime": "2018-06-20T07:00:00.00" }, { "temperature": "17", "dewpoint": "15", "rain": "0", "freezinglevel": "4664", "uvIndex": "0", "totalcloud": "16", "lowcloud": "16", "medcloud": "0", "highcloud": "0", "humidity": "91", "windspeed": "9", "meansealevelpressure": "1017.77", "windgustspeed": "10", "winddirection": "27.9231", "windletter": "NNE", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "D", "utcTime": "2018-06-20T08:00:00.00" }, { "temperature": "18", "dewpoint": "15", "rain": "0", "freezinglevel": "4673", "uvIndex": "1", "totalcloud": "32", "lowcloud": "32", "medcloud": "0", "highcloud": "0", "humidity": "86", "windspeed": "9", "meansealevelpressure": "1018.05", "windgustspeed": "11", "winddirection": "25.3295", "windletter": "NNE", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "D", "utcTime": "2018-06-20T09:00:00.00" }, { "temperature": "18", "dewpoint": "15", "rain": "0", "freezinglevel": "4687", "uvIndex": "2", "totalcloud": "38", "lowcloud": "38", "medcloud": "0", "highcloud": "0", "humidity": "82", "windspeed": "9", "meansealevelpressure": "1018.31", "windgustspeed": "10", "winddirection": "22.0118", "windletter": "NNE", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "D", "utcTime": "2018-06-20T10:00:00.00" }, { "temperature": "19", "dewpoint": "15", "rain": "0", "freezinglevel": "4702", "uvIndex": "3", "totalcloud": "36", "lowcloud": "36", "medcloud": "0", "highcloud": "0", "humidity": "76", "windspeed": "9", "meansealevelpressure": "1018.56", "windgustspeed": "10", "winddirection": "18.4385", "windletter": "NNE", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "D", "utcTime": "2018-06-20T11:00:00.00" }, { "temperature": "20", "dewpoint": "15", "rain": "0", "freezinglevel": "4712", "uvIndex": "4", "totalcloud": "31", "lowcloud": "31", "medcloud": "0", "highcloud": "0", "humidity": "72", "windspeed": "9", "meansealevelpressure": "1018.79", "windgustspeed": "9", "winddirection": "14.9684", "windletter": "NNE", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "D", "utcTime": "2018-06-20T12:00:00.00" }, { "temperature": "20", "dewpoint": "15", "rain": "0", "freezinglevel": "4722", "uvIndex": "5", "totalcloud": "26", "lowcloud": "26", "medcloud": "0", "highcloud": "0", "humidity": "69", "windspeed": "9", "meansealevelpressure": "1018.9", "windgustspeed": "8", "winddirection": "12.5729", "windletter": "W", "icon": "FA", "iconName": "Fair", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "D", "utcTime": "2018-06-20T13:00:00.00" }, { "temperature": "21", "dewpoint": "15", "rain": "0", "freezinglevel": "4739", "uvIndex": "10", "totalcloud": "1", "lowcloud": "1", "medcloud": "0", "highcloud": "0", "humidity": "68", "windspeed": "9", "meansealevelpressure": "1018.83", "windgustspeed": "8", "winddirection": "10.6461", "windletter": "N", "icon": "SU", "iconName": "Sunny", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "D", "utcTime": "2018-06-20T14:00:00.00" }, { "temperature": "21", "dewpoint": "15", "rain": "0", "freezinglevel": "4765", "uvIndex": "10", "totalcloud": "1", "lowcloud": "1", "medcloud": "0", "highcloud": "0", "humidity": "67", "windspeed": "9", "meansealevelpressure": "1018.59", "windgustspeed": "8", "winddirection": "9.82178", "windletter": "N", "icon": "SU", "iconName": "Sunny", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "D", "utcTime": "2018-06-20T15:00:00.00" }, { "temperature": "21", "dewpoint": "15", "rain": "0", "freezinglevel": "4797", "uvIndex": "10", "totalcloud": "1", "lowcloud": "1", "medcloud": "0", "highcloud": "0", "humidity": "67", "windspeed": "9", "meansealevelpressure": "1018.34", "windgustspeed": "8", "winddirection": "9.66212", "windletter": "N", "icon": "SU", "iconName": "Sunny", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "D", "utcTime": "2018-06-20T16:00:00.00" }, { "temperature": "21", "dewpoint": "15", "rain": "0", "freezinglevel": "4826", "uvIndex": "9", "totalcloud": "1", "lowcloud": "1", "medcloud": "0", "highcloud": "0", "humidity": "68", "windspeed": "9", "meansealevelpressure": "1017.98", "windgustspeed": "8", "winddirection": "8.49407", "windletter": "N", "icon": "SU", "iconName": "Sunny", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "D", "utcTime": "2018-06-20T17:00:00.00" }, { "temperature": "20", "dewpoint": "15", "rain": "0", "freezinglevel": "4844", "uvIndex": "9", "totalcloud": "1", "lowcloud": "1", "medcloud": "0", "highcloud": "0", "humidity": "70", "windspeed": "9", "meansealevelpressure": "1017.81", "windgustspeed": "9", "winddirection": "8.70691", "windletter": "N", "icon": "SU", "iconName": "Sunny", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "D", "utcTime": "2018-06-20T18:00:00.00" }, { "temperature": "20", "dewpoint": "15", "rain": "0", "freezinglevel": "4857", "uvIndex": "8", "totalcloud": "1", "lowcloud": "1", "medcloud": "0", "highcloud": "0", "humidity": "72", "windspeed": "10", "meansealevelpressure": "1017.93", "windgustspeed": "10", "winddirection": "10.5324", "windletter": "N", "icon": "SU", "iconName": "Sunny", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "N", "utcTime": "2018-06-20T19:00:00.00" }, { "temperature": "19", "dewpoint": "15", "rain": "0", "freezinglevel": "4872", "uvIndex": "2", "totalcloud": "1", "lowcloud": "1", "medcloud": "0", "highcloud": "0", "humidity": "74", "windspeed": "10", "meansealevelpressure": "1018.25", "windgustspeed": "11", "winddirection": "13.7294", "windletter": "NNE", "icon": "SU", "iconName": "Sunny", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "N", "utcTime": "2018-06-20T20:00:00.00" }, { "temperature": "19", "dewpoint": "15", "rain": "0", "freezinglevel": "4889", "uvIndex": "1", "totalcloud": "1", "lowcloud": "1", "medcloud": "0", "highcloud": "0", "humidity": "78", "windspeed": "11", "meansealevelpressure": "1018.64", "windgustspeed": "13", "winddirection": "17.2073", "windletter": "NNE", "icon": "SU", "iconName": "Sunny", "chanceofrain": "0", "chanceofsnow": "0", "dayOfWeek": "4", "weekday": "Wednesday", "sunrise": "6:57", "sunset": "19:04", "dayOrNight": "N", "utcTime": "2018-06-20T21:00:00.00" }, ], "continent": "", "country": "", "location": "28.0/-15.6", "latitude": 28.0, "longitude": -15.6, "timezone": 1 } }, "feedCreation": "2018-06-19T23:05:19.00", "feedCreator": "Metcheck.com", "feedModel": "GHX2", "feedModelRun": "12Z", "feedModelRunInitialTime": "2018-06-19T12:00:00.00", "feedResolution": "0.01" }
My Dart code
@override Widget build(BuildContext context) { return Scaffold( appBar: new AppBar( title: new Text("G.C. - WEATHER"), centerTitle: true, backgroundColor: Colors.blue[700], ), body: new Container( child: new RefreshIndicator( onRefresh: _autoRefresh, child: new ListView( children: <Widget>[ new FutureBuilder<List<Post>>( future: fetchPosts(), builder: (context, snapshot) { if (snapshot.hasData){ List<Post> posts = snapshot.data; return new Column( children: posts.map((post) => new Column( children: <Widget>[ new Text(post.temperature), ], )).toList() ); } else if(snapshot.hasError) { return snapshot.error; } return new Center( child: new Column( children: <Widget>[ new Padding(padding: new EdgeInsets.all(50.0)), new CircularProgressIndicator(), ], ), ); }, ), ], ), ), ), ); } }
GET DATA POST IN MY DART CODE
Future<List<Post>> fetchPosts() async { http.Response response = await http.get('http://ws1.metcheck.com/ENGINE/v9_0/json.asp?lat=28&lon=-15.6&lid=62228&Fc=No'); List responseJson = json.decode(response.body); return responseJson.map((m) => new Post.fromJson(m)).toList(); } class Post { final String temperature, rain, humidity, sunrise, sunset, updateDate; Post({ this.temperature, this.rain, this.humidity, this.sunrise, this.sunset, this.updateDate, }); factory Post.fromJson(Map<String, dynamic> json) { return new Post( temperature: json['metcheckData']['forecastLocation']['forecast']['temperature'].toString(), rain: json['metcheckData']['forecastLocation']['forecast']['rain'].toString(), humidity:json['metcheckData']['forecastLocation']['forecast']['humidity'].toString(), sunrise: json['metcheckData']['forecastLocation']['forecast']['sunrise'].toString(), sunset: json['metcheckData']['forecastLocation']['forecast']['sunset'].toString(), updateDate: json['metcheckData']['forecastLocation']['forecast']['utcTime'].toString(), ); } }
在查看了您的json和代码后,我发现您的json的根不是JsonArray而是JsonObject。您想要获取的清单在里面 ['metcheckData']['forecastLocation']['forecast']
['metcheckData']['forecastLocation']['forecast']
在这里,我对正在工作的代码进行了更改..
Future<List<Post>> fetchPosts() async { http.Response response = await http.get( 'http://ws1.metcheck.com/ENGINE/v9_0/json.asp?lat=28&lon=-15.6&lid=62228&Fc=No'); var responseJson = json.decode(response.body); return (responseJson['metcheckData']['forecastLocation']['forecast'] as List) .map((p) => Post.fromJson(p)) .toList(); } class Post { final String temperature, rain, humidity, sunrise, sunset, updateDate; Post({ this.temperature, this.rain, this.humidity, this.sunrise, this.sunset, this.updateDate, }); factory Post.fromJson(Map<String, dynamic> json) { return new Post( temperature: json['temperature'].toString(), rain: json['rain'].toString(), humidity: json['humidity'].toString(), sunrise: json['sunrise'].toString(), sunset: json['sunset'].toString(), updateDate: json['utcTime'].toString(), ); } }