Map Dart组件映射。键()
我在许多地方看到了一个示例,用于对地图进行编码,如下所示: 导入('dart:uri'); 字符串编码映射(映射数据){ 返回Strings.join(data.getKeys().map((k){ 返回“${encodeUriComponent(k)}=${encodeUriComponent(data[k])}”; }), "&"); } 我正在运行最新的Dart编辑器(版本0.2.9_r 16323) 在上面的示例中,对于Dart M2,我认为Map Dart组件映射。键(),map,urlencode,dart,Map,Urlencode,Dart,我在许多地方看到了一个示例,用于对地图进行编码,如下所示: 导入('dart:uri'); 字符串编码映射(映射数据){ 返回Strings.join(data.getKeys().map((k){ 返回“${encodeUriComponent(k)}=${encodeUriComponent(data[k])}”; }), "&"); } 我正在运行最新的Dart编辑器(版本0.2.9_r 16323) 在上面的示例中,对于Dart M2,我认为data.getKeys()已更改为data
data.getKeys()
已更改为data.keys()
,我已对其进行了更改
但是,在编辑器中运行时出现错误:
异常:NoSuchMethodError:找不到方法:“调用”
我有两个问题:
- 我想知道上面的代码是否仍然可以在M2中使用(Map.keys())
- 我想知道上面的代码是否与以下代码有所不同:JSON.stringify(data)
语法已更改import
方法成为名为getKeys()
的getterkeys
导入'dart:uri';
字符串编码映射(映射数据){
返回Strings.join(data.keys.map)((k){
返回“${encodeUriComponent(k)}=${encodeUriComponent(data[k])}”;
}), "&");
}
此encodeMap
生成的String
与JSON.stringify
生成的字符串非常不同,您可以在下面的代码段中看到:
main(){
最终地图={“a”:“b”,“c”:“d”};
断言(encodeMap(map)=“a=b&c=d”);
assert(JSON.stringify(map)='{“a”:“b”,“c”:“d”}');
}
非常感谢您的回答。它回答了我的两个问题。我错过了getKeys().map()改为keys.map()而不是keys().map()的微妙之处。encodeMap()中的解决方案的语法至少对我来说相当神秘。使用类似于JSON.stringify()的函数难道没有意义吗处理这个问题?非常感谢,因为我花了很长时间试图解决对我来说是个问题。虽然我认为Dart绝对很棒,但jquery似乎通过使用$.ajax()更优雅地处理了这个问题。我认为Dart(目前)没有类似的东西。