Dart 中的 json 数组在高于 0 的位置出现范围误差



我正在尝试到达数组的位置 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 变量,它是双精度而不是整数。这导致响应只有当天。

最新更新