首页 > 解决方案 > 在 Flutter 和 Dart 中从 JSON 解析双精度值

问题描述

当我尝试从 Flutter 中的 JSON 获取双精度值时遇到问题。

class MapPoint {
  String title;
  double lat;
  double lng;

  MapPoint({this.title, this.lat, this.lng});

  factory MapPoint.fromJson(Map<String, dynamic> json) {
    return MapPoint(
        title: json["title"] as String,
        lat: json["lat"] as double,
        lng: json["lng"] as double
    );
  }
}

由于某种原因,我得到了错误

Dart 错误:未处理的异常:“double”类型不是“String”类型的子类型

我尝试了一些用户double.parse(json["lng"]),但得到了同样的错误。
同时,这种从 JSON 获取数据的方式也适用于其他类型。

这是 JSON 示例

{ 
   point: {
     title: "Point title",
     lat: 42.123456,
     lng: 32.26567
  }
}

标签: jsondartflutterdouble

解决方案


Dart JSON 解析器转换 json 中的属性,显然它足够聪明,可以吐出一个 double 类型。

someVariable as double期望左侧有一个字符串。

可能发生的事情是您正在尝试将双精度转换为双精度。

我会尝试这样的事情:

lat: json["lat"].toDouble(),

这将涵盖 JSON 中的数据类似于“5”的情况。在这种情况下,dart json 转换器会将类型转换为 int,如果您总是期待双精度,它会破坏您的代码。


推荐阅读