Dart encodeUriComponent Map.keys()

时间:2013-01-04 18:42:09

标签: map urlencode dart

我在很多地方都看到了一个用于编码Map的示例,如下所示:

#import('dart:uri');
String encodeMap(Map data) {
    return Strings.join(data.getKeys().map((k) {
        return "${encodeUriComponent(k)}=${encodeUriComponent(data[k])}";
    }), "&");
}

我正在运行看似最新的Dart编辑器(版本0.2.9_r 16323) 在上面的示例中,对于Dart M2,我认为data.getKeys()已更改为我已更改的data.keys()

但是,在编辑器中运行时出现错误:

  

异常:NoSuchMethodError:找不到方法:'call'“

我有两个问题:

  • 我想知道上面的代码是否仍然可以在M2中使用指示的更改(Map.keys())?
  • 我想知道上面的代码是否有不同之处:JSON.stringify(data);

欢迎任何其他指示。

TIA。

1 个答案:

答案 0 :(得分:0)

要做两处更改:

  • import语法已更改。
  • getKeys()方法成为名为keys的吸气剂。

工作版本:

import 'dart:uri';

String encodeMap(Map data) {
    return Strings.join(data.keys.map((k) {
        return "${encodeUriComponent(k)}=${encodeUriComponent(data[k])}";
    }), "&");
}

String生成的encodeMapJSON.stringify生成的main() { final map = {"a":"b", "c":"d"}; assert(encodeMap(map) == "a=b&c=d"); assert(JSON.stringify(map) == '{"a":"b","c":"d"}'); } 完全不同,您可以在下面的代码段中看到:

{{1}}