【发布时间】:2019-06-14 02:11:51
【问题描述】:
我在 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”不是 输入“字符串”
我向用户 double.parse(json["lng"]) 尝试了一些,但得到了同样的错误。
同时,这种从 JSON 获取数据的方式也适用于其他类型。
这是 JSON 示例
{
point: {
title: "Point title",
lat: 42.123456,
lng: 32.26567
}
}
【问题讨论】:
-
什么 JSON 会导致这个错误?如果您的值用引号括起来,它们将不会被解释为双精度值。
-
JSON 很好,因为我可以从中获取所有其他值(sting 和 int)
-
要么 JSON 不适合您的代码,要么您的代码不适合您的 JSON。如果不提供导致错误的 JSON,您也可以删除问题,因为它没有提供诊断问题所需的信息。
-
我添加了 JSON 的示例。可能不寻常的一件事是双精度值不会以字符串形式呈现。
-
那不是有效的 JSON。在 JSON 中,必须引用键,并且在
"Point title"之后缺少,。双精度值在 JSON 中永远不会表示为String。