忽略强制转换从JSArray失败到List <string>

时间:2018-03-07 09:49:02

标签: angular dart

我从api接收带有字符串数组的json。然后我将它设置为类型为List的本地变量。

if (json['x'] is List) {
  List<String> x = json['x'];
  print(x);
}

当我运行应用程序时,Chrome会向我显示一个警告:&#34;忽略强制转换从JSArray失败到列表&#34;

我应该怎么做?

  • Angular 5.0.0-alpha + 6
  • Chrome 63.0.3239.132
  • Dart VM版本:2.0.0-dev.32.0

1 个答案:

答案 0 :(得分:1)

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

如果你想把某些东西投射到List<String>,你不能像在Dart 2中那样只依赖隐式投射。你必须使用真实的类型:

List x = json['x'];

或使用.cast功能:

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

我意识到这比以前写得更多。如果您不喜欢围绕此问题的样板,您可能需要查看JSON序列化包,例如json_serializablebuilt_value