【发布时间】:2021-04-22 17:16:27
【问题描述】:
所以我有这个代码以某种方式工作,但我无法真正解释为什么。 为了获得此代码,我使用了一个自动 json 来编码名为 quicktype 的应用程序,使用我公司提供的 json 作为输入。代码的目标是获取包含以下格式的多边形的地图:{(多边形的随机 ID)} ==> [Lat,Lon]
class Poligoni {
Map<String, List<String>> poligoni;
Poligoni({
this.poligoni,
});
factory Poligoni.fromRawJson(String str) {
return Poligoni.fromJson(json.decode(str));
}
factory Poligoni.fromJson(Map<String, dynamic> json) {
return Poligoni(
poligoni: Map.from(json["Poligoni"]).map((k, v) {
return MapEntry<String, List<String>>(
k, List<String>.from(v.map((x) => x)));
}),
);
}
}
因此,代码要么接受来自 (.fromRawJson) 函数的原始 json,要么接受来自 (.fromJson) 函数的解码后的 json。这里没有问题。让我困惑的部分是这个:
factory Poligoni.fromJson(Map<String, dynamic> json) {
return Poligoni(
poligoni: Map.from(json["Poligoni"]).map((k, v) {
return MapEntry<String, List<String>>(
k, List<String>.from(v.map((x) => x)));
}),
);
}
我理解的问题是(.fromJson 函数):
- 为什么我返回一个类?例如:
return Poligoni(.....various code) - 在这种情况下重定向构造函数的使用对我来说不是很清楚
poligoni: - 理解
poligoni:之后的函数有很多困难:我知道该函数解析json 键'Poligoni' 并将其转换为另一个<String>,List<String>类型的映射 它包含每个键的一个点列表,这些点形成一个多边形,但是我不确定如何,如果您可以编写逐步的步骤,将不胜感激,或者如果您可以重新格式化此代码以使其更清晰,将不胜感激.
我尝试浏览 dart 和 Flutter 文档,但由于我的代码使用的嵌套函数和一点语言障碍,我并没有理解其中的大部分内容。
非常感谢任何帮助, 最好的问候。
【问题讨论】:
标签: android json android-studio flutter dart