json - Dart 2.0中强模式的问题

标签 json parsing dart flutter dart-2

我目前正在学习颤振和飞镖,试图扩大我的知识。
我遇到的问题是,从DART 1.0更改为DART 2.0,这导致我认为问题在于类型模式的更改。我的代码:
我在玩Spotify图书馆,它能做到:

object.artists = (map['artists'] as List<dynamic>)
    ?.map(ArtistSimpleMapper.parse)
    ?.toList();

类artistssimplemapper中的parse方法如下:
/// Converts a Map to an instance of Image.
static Image parse(Map<String, dynamic> map) {
  if (map == null) return null;
  final Image object = new Image();
  object.height = map['height'];
  object.width = map['width'];
  object.url = map['url'];
  return object;
}

我最成功的方法是使用.cast<dynamic>(),代码在运行时失败,而不是在编译时失败,不用说我完全迷失在如何遵循或如何解决这个问题上。
错误:
Error: A value of type '(dart.core::Map<dart.core::String, dynamic>) →     spotify::ArtistSimple' can't be assigned to a variable of type '(dynamic) → dart.core::Object'.

?.map(ArtistSimpleMapper.parse)
                         ^

阅读后:link

最佳答案

错误基本上是说,你在dynamic中的List<dynamic>不是Map<String, dynamic>类型。
我无法访问您的“Spotify库”,也就是说,我无法查找您的map['artists']List中的元素的类型。
如果没有特定的类型,那么元素由不同的类型组成。您必须通过重组您的parse函数并将其参数更改为dynamic来说明这一点。

关于json - Dart 2.0中强模式的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50948367/

相关文章:

jquery - 使用 jQuery 从 AJAX 响应(json)构建表行

web-services - Google App Engine + 基于 JSON 的服务 + 身份验证

c++ - Flex Bison 构造的编译器打印正确的结果然后给出语法错误

dart - flutter/Dart : Find two video segments and merge them into a single valid video file?

dart - 添加/覆盖要映射的项目并返回 map

javascript - 使用 Javascript 读取 JSON 文件

javascript - 通过XHR获取json数据以动态智能渲染dhtmlxgrid无限循环

从不完整的字符串解析 golang 时间对象

python - 我可以查看使用 lxml 从 html 文档解析的元素源的实际行吗

dart - 为什么 `pub install` 继续在 `packages` 的所有子目录中创建 `web` 链接?