我从api接收带有字符串数组的json。然后我将它设置为类型为List的本地变量。
if (json['x'] is List) {
List<String> x = json['x'];
print(x);
}
当我运行应用程序时,Chrome会向我显示一个警告:&#34;忽略强制转换从JSArray失败到列表&#34;
我应该怎么做?
答案 0 :(得分:1)
JSON将所有数组编码为List<dynamic>
,因为这是规范。
如果你想把某些东西投射到List<String>
,你不能像在Dart 2中那样只依赖隐式投射。你必须使用真实的类型:
List x = json['x'];
或使用.cast
功能:
var x = (json['x'] as List).cast<String>();
我意识到这比以前写得更多。如果您不喜欢围绕此问题的样板,您可能需要查看JSON序列化包,例如json_serializable
或built_value
。