【问题标题】:type 'String' is not a subtype of type 'int' of 'index' in a nested JSON类型'String'不是嵌套JSON中'index'类型'int'的子类型
【发布时间】:2021-12-19 23:11:02
【问题描述】:

我有一个使用加拉加斯委内瑞拉作为位置的天气 api 的 json,我想获取 daily_chance_of_rain 和 daily_will_it_rain:

 "forecast": {
    "forecastday": [
        {
            "day": {
                "daily_will_it_rain": 1,
                "daily_chance_of_rain": 97,

 //The Json is longer, so I cropped it 
      

我尝试这样获取它,因为这些值是 int:

  int? will_it_rain;
  int? chance_of_rain;

  var searchResult = await http
    .get(Uri.parse(searchApiUrl + "Caracas" + "&days=1&aqi=no&alerts=no"));
  var result = json.decode(searchResult.body);

  will_it_rain =
       result["forecast"]["forecastday"]["day"]["daily_will_it_rain"];
  chance_of_rain =
       result["forecast"]["forecastday"]["day"]["daily_chance_of_rain"];

但我明白了:

Exception has occurred.
_TypeError (type 'String' is not a subtype of type 'int' of 'index')

为什么我得到那个错误是那些值不是字符串?

【问题讨论】:

  • 这个错误表示你做了这个someList['some string'],也就是说你把一个字符串传入了一个索引,在这种情况下,forecastday实际上是一个天的列表,所以你需要做类似result["forecast"]["forecastday"][0]["day"]["daily_will_it_rain"];

标签: flutter api dart


【解决方案1】:

这个错误说明你做了这个someList['some string'],也就是说你把一个字符串传入了一个索引,在这种情况下,forecastday实际上是一个天的列表,所以你需要做点什么。

will_it_rain =
       result["forecast"]["forecastday"][0]["day"]["daily_will_it_rain"];
  chance_of_rain =
       result["forecast"]["forecastday"][0]["day"]["daily_chance_of_rain"];

【讨论】:

    【解决方案2】:

    这样返回结果时需要定义索引:

    result["forecast"]["forecastday"][0]["day"]["daily_will_it_rain"];
    

    或者你可以像this example一样使用迭代。

    【讨论】:

      猜你喜欢
      • 2019-04-24
      • 2021-03-29
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 2021-08-10
      • 2021-09-08
      • 2020-10-02
      • 1970-01-01
      相关资源
      最近更新 更多