当前位置: 首页 > 知识库问答 >
问题:

未处理的异常:类型'double'不是类型'string'的子类型

花烨
2023-03-14
FeelsLike.fromJson(Map<String, dynamic> json) {
    day = double.parse(json['day']);
    night = double.parse(json['night']);
    eve = double.parse(json['eve']);
    morn = double.parse(json['morn']);
  }

上面的代码给出了警告未处理的异常:类型'double'不是类型'string'的子类型

 FeelsLike.fromJson(Map<String, dynamic> json) {
    day = (json['day']).toDouble;
    night = (json['night']).toDouble();
    eve = (json['eve']).toDouble();
    morn = (json['morn']).toDouble();
  }
FeelsLike.fromJson(Map<String, dynamic> json) {
    day = double.parse((json['day'])).toDouble();
    night = double.parse((json['night'])).toDouble();
    eve = double.parse((json['eve'])).toDouble();
    morn = double.parse((json['morn'])).toDouble();
  }

共有1个答案

唐伟
2023-03-14

您正在将double传递给double.parse()函数。当您解析JSON字符串以将 与JsonDecode函数或其他类似函数映射到 时,该函数期望string而不是double。该函数将识别JSON中使用的基本基元类型,并将它们转换为dart中相同的等效类型,因此当您调用JSON['night']时,它的类型是double而不是string,并且不需要再次解析为double(例如,如果您有类似的JSON

{
 "Point":9.5
}

解析时,此函数将返回一个map 对象,该对象包含一个名为“point”的键,该键的值为9.5,具有double类型,而不是string类型,对于list,int,double,string类型和具有map 类型的嵌套JSON对象也是如此

{
  "Point":9.5
}

{
  "Point":"9.5"
}

第一个中的点值是double,第二个中的点值是字符串,因为有引号

 类似资料: