1

我正在尝试将以下 javascript 对象转换为 Dart 映射:

var users = { 
    1 : {
      first_name: 'James',
      last_name: 'Smith',
      email: 'jsmith@example.com',
    },
    2 : {
      first_name: 'Robin',
      last_name: 'Doe',
      email: 'rdoe@example.com',
    }

我试过了:

var users = { 
    "1" : {
      first_name: 'James',
      last_name: 'Smith',
      email: 'jsmith@example.com',
    },
    "2" : {
      first_name: 'Robin',
      last_name: 'Doe',
      email: 'rdoe@example.com',
    } 

但我无法将其用作带有引号或不带引号的数字的地图(引发错误)。

var keys = users.getKeys(); //NoSuchMethodError : method not found: 'getKeys'
assert(keys.length == 2);
assert(new Set.from(keys).contains('2'));
4

1 回答 1

5

对属性名称使用(单引号或双引号):

var users = {
   "1" : {
     "first_name": "James",
     "last_name": "Smith",
     "email": "jsmith@example.com",
   },
   "2" : {
     "first_name": "Robin",
     "last_name": "Doe",
     "email": "rdoe@example.com"
   }
 };

此外,getKeys方法不存在,请keys改用:

 var keys = users.keys;
 assert(keys.length == 2);
 assert(keys.contains("2"));
 assert(users["1"]["first_name"] == "James");
于 2012-12-16T19:46:06.357 回答