json - 在 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
}
}
解决方案
Dart JSON 解析器转换 json 中的属性,显然它足够聪明,可以吐出一个 double 类型。
someVariable as double
期望左侧有一个字符串。
可能发生的事情是您正在尝试将双精度转换为双精度。
我会尝试这样的事情:
lat: json["lat"].toDouble(),
这将涵盖 JSON 中的数据类似于“5”的情况。在这种情况下,dart json 转换器会将类型转换为 int,如果您总是期待双精度,它会破坏您的代码。
推荐阅读
- ruby - Jira API 获取 Jira 项目中具有特定状态的所有用户
- php - 为什么url后面有问号?
- python - Pandas 中的条件词频计数
- html - 带有溢出的包装器:自动切断表格右边框
- python - Peewee 计算具有特定值的所有对象
- reactjs - Visual Studio 无法识别多行字符串
- google-sheets - 如何从一个完整的不同谷歌表中只计算一个单元格?
- javascript - Javascript array.some:将参数传递给回调
- jenkins - Jenkinsfile - 在失败后阶段使用 if 语句
- android - 如何更改抽屉图标的颜色?