我正在尝试到达数组的位置 1,但在颤振飞镖中出现范围错误 0:1。
我尝试了各种方法来json.decode(data(,但我不断收到以下错误,
[错误:颤振/lib/ui/ui_dart_state.cc(148(] 未处理的异常:范围错误(索引(:无效值:只有有效值为 0:1
{
"location": {8 items},
"current": {23 items},
"forecast": {
"forecastday": [
{
"date": "2019-06-16",
"date_epoch": 1560643200,
"day": {15 items},
"astro": {6 items},
"hour": [24 items]
},
{
"date": "2019-06-17",
"date_epoch": 1560729600,
"day": {15 items},
"astro": {6 items},
"hour": [24 items]
}
]
}
}
import 'dart:convert';
import 'dart:async';
Future<void> getData() async {
http.Response response = await http.get('https://api.xyz'); // ( See the json copied above)
if (response.statusCode == 200) {
String data = response.body;
var decodedData = json.decode(data);
Map dataJ = json.decode(data);
List fc = dataJ['forecast']['forecastday'];
var fcc = decodedData['forecast']['forecastday'];
print(fc[0]['date']); // works
print(fcc[0]['date']); // works
print(json.decode(data)['forecast']['forecastday'][0]['date']); // works
print(fc[1]['date']); // Fails range error expects 0 got 1
print(fcc[1]['date']); // Fails range error expects 0 got 1
print(json.decode(data)['forecast']['forecastday'][1]['date']); // Fails range error expects 0 got 1
// -> [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: RangeError (index): Invalid value: Only valid value is 0: 1
} else {
print(response.statusCode);
}
}
我期望得到的是接下来几天的日期,而不是错误。
我也能够进一步浏览数组(仍然在预测日 0 位置(它有效。如果我将预测日更改为高于 0 的任何值,它会失败?
print(fc[0]['hour'][4]['wind_dir']);
问题是 URL 中的一个 days 变量,它是双精度而不是整数。这导致响应只有当天。