api - Flutter 参数类型'String'不能赋值给参数类型'Map'
问题描述
当我想从 PONS API 获取数据时遇到问题。
import 'package:eng_it_translator/model/model.dart';
import 'package:http/http.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
class Network {
Future<Vocabulary> fetchData({String keyword}) async {
var headers = {
'X-Secret':
'XXXXXXXXXXXXX',
};
var params = {
'q': 'house',
'l': 'deen',
};
var query = params.entries.map((p) => '${p.key}=${p.value}').join('&');
var url = Uri.parse("https://api.pons.com/v1/dictionary?$query");
var res = await http.get(url, headers: headers);
if (res.statusCode == 200) {
var data = json.decode(res.body);
var realdata =
List<Vocabulary>.from(data).map((x) => Vocabulary.fromJson(x));
print(realdata);
} else {
throw Exception('http.get error: statusCode= ${res.statusCode}');
}
}
}
不能将参数类型“词汇”分配给参数类型“Map<String, dynamic>”。
DATA 的主体在 Map 结构中,但我无法将其转换为 List。
class Vocabulary {
String lang;
List<Hits> hits;
Vocabulary({this.lang, this.hits});
Vocabulary.fromJson(Map<String, dynamic> json) {
lang = json['lang'];
if (json['hits'] != null) {
hits = new List<Hits>();
json['hits'].forEach((v) {
hits.add(new Hits.fromJson(v));
});
}
}
解决方案
您可以通过添加 toList() 将您的词汇数据转换为列表
List.from(data)
.map((x) => Vocabulary.fromJson(x))
.toList());
推荐阅读
- node.js - 使用顺序参数发出动态数量的请求
- html - 居中段落,同时有边距以创建空白空间
- python - 我可以将 Excel 中的现有图表翻译/复制到 Python 中吗?
- javascript - Vue无限加载与axios正在跳过第2页
- xamarin - 显示模式后无法更改选项卡式页面的选项卡
- python - DRF 使用非模型字段来验证凭据
- postgresql - 为 sqlalchemy/postgresql 中的数据库查询列表获取数组中唯一数字的频率
- ios - 隐藏或更改手势栏颜色的代码或设置(也称为应用切换器)iOS 10+
- javascript - 如何在 UnderScore.js 中创建嵌套分组依据
- elasticsearch - 在 Elasticsearch 中对聚合结果集进行排序和过滤