在Flutter中,我有两个模型。我们可以叫父亲和儿子。
Son模型是
class GraphData {
int timestamp;
double value;
bool error;
GraphData({
this.timestamp,
this.value,
this.error,
});
factory GraphData.fromJson(Map<String, dynamic> json) => new GraphData(
timestamp: json["x"],
value: json["y"],
error: json["error"],
);
}
父亲的模型
import 'graph_data_model.dart';
class Graph {
String name;
List<GraphData> data;
int type;
Graph({
this.name,
this.data,
this.type,
});
factory Graph.fromJson(Map<String, dynamic> json) => new Graph(
name: json["name"],
data: json['data'], //Error here
type: json["type"],
);
}
我想导入儿子在父亲模型。使用此代码返回
_TypeError(类型“List< dynamic >”不是类型“List”的子类型< GraphData >)
那么:正确的方法是什么?
解决方案
儿子模型
import 'graph_data_model.dart';
class Graph {
String name;
List<GraphData> data;
int type;
Graph({
this.name,
this.data,
this.type,
});
factory Graph.fromJson(Map<String, dynamic> json) {
var list = json['data'] as List;
List<GraphData> data = list.map((i) => GraphData.fromJson(i)).toList();
return Graph(
name: json["name"],
data: data,
type: json["type"],
);
}
}
1条答案
按热度按时间2w3kk1z51#
发生错误
_TypeError (type 'List <dynamic> ' is not a subtype of type 'List <GraphData>')
是因为json返回的反序列化List是List<dynamic>
,无法直接Map到List<GraphData>
。无法识别反序列化列表中的Object是否与GraphData匹配。这里可以做的是从
json['data']
解析List<dynamic>
,然后将其Map到List<GraphData>
。