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

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

当我运行应用程序时,Chrome向我显示警告:“忽略从JSArray到列表的转换失败”

我该怎么办?

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

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

    如果要将某些内容强制转换为List<String>,则不能像Dart 2那样仅依靠隐式强制转换。您必须使用实型:

    List x = json['x'];
    

    或使用.cast函数:
    var x = (json['x'] as List).cast<String>();
    

    我意识到这比以前写的更多。如果您不喜欢这方面的样板,则可能需要查看JSON序列化软件包,例如json_serializablebuilt_value

    09-25 19:37
    查看更多