【问题标题】:Unhandled Exception: type 'double' is not a subtype of type 'String'未处理的异常:“double”类型不是“String”类型的子类型
【发布时间】:2021-03-30 19:09:09
【问题描述】:
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']);
  }

上面的代码给出了警告Unhandled Exception: type 'double' is not a subtype of type 'String'

我也试过了..

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

但随后它会给出警告,如 Unhandled Exception: type '() => double' is not a subtype of type 'double'

我也试过..

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();
  }

然后它给我一个类似这样的警告未处理的异常:类型'double'不是'String'类型的子类型

有人可以告诉我如何消除该警告吗?

【问题讨论】:

  • 能把得到的json加进去吗?
  • @FelipeVergara 确实很长
  • 可以发很长。
  • 我明白了,你能用这个应用程序创建你的模型吗?您可以粘贴您的对象,它会自动生成具有功能的模型。 (app.quicktype.io)
  • 您不需要发布整个 JSON。只需添加显示您尝试解析的“day”、“night”、“eve”和“morn”值的任何一小部分 JSON。

标签: flutter parsing dart double warnings


【解决方案1】:

您将双精度传递给 double.parse() 函数此函数需要字符串而不是双精度 当您使用 JsonDecode 函数或其他类似函数将 JSON 字符串解析为 Map 时,此函数将识别 JSON 中使用的基本原始类型并将它们转换为 dart 中相同的等效类型,因此当您调用 json[ 'night'] 它的类型是 double 而不是 string,不需要再次解析为 double 例如,如果你有这样的 JSON

{
 "Point":9.5
}

当您解析此函数时,将返回一个 Map 对象,该对象包含一个名为“Point”的键,其值为 9.5,具有双精度类型,而不是字符串类型 同样,对于具有 Map 类型的 list、int、double、string 类型和嵌套 JSON 对象也是如此 注意是有区别的

{
  "Point":9.5
}

{
  "Point":"9.5"
}

第一个点的值是双倍的,第二个因为引号是一个字符串

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-11
    • 2021-09-19
    • 2021-07-18
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多