Angular 忽略从JSArray到List的强制转换失败<;字符串>;

Angular 忽略从JSArray到List的强制转换失败<;字符串>;,angular,dart,Angular,Dart,我使用字符串数组从api接收json。然后我用类型列表将其设置为局部变量 if (json['x'] is List) { List<String> x = json['x']; print(x); } if(json['x']是列表){ 列表x=json['x']; 印刷品(x); } 当我运行应用程序时,Chrome向我显示一条警告:“忽略从JSArray到List的强制转换失败” 那我该怎么办 角度5.0.0-α+6 铬63.0.3239.132 Dart虚拟机

我使用字符串数组从api接收json。然后我用类型列表将其设置为局部变量

if (json['x'] is List) {
  List<String> x = json['x'];
  print(x);
}
if(json['x']是列表){
列表x=json['x'];
印刷品(x);
}
当我运行应用程序时,Chrome向我显示一条警告:“忽略从JSArray到List的强制转换失败”

那我该怎么办


  • 角度5.0.0-α+6
  • 铬63.0.3239.132
  • Dart虚拟机版本:2.0.0-dev.32.0

JSON将所有数组编码为
List
,因为这是规范

如果您想将某些内容强制转换为
列表
,则不能像在Dart 2中那样仅依赖隐式强制转换。您必须使用实数类型:

List x = json['x'];
或者使用
.cast
功能:

var x = (json['x'] as List).cast<String>();
var x=(json['x']as List).cast();

我意识到这比以前更多的是写作。如果您不喜欢这周围的锅炉板,您可能想看看JSON序列化包,例如
JSON_serializable
build_value

我假设这是来自DDC的,对吗?Dart2的dar2js正在进行中。我想只有在那里也显示了警告,这才有意义。另见