当我想从 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}');
}
}
}
不能将参数类型“Vocabulary”分配给参数类型“Map
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));
});
}
}
答案 0 :(得分:0)
我认为你必须将 json 转换为 Map 试试这个
hits: json['hits'] != null
? json['hits'].map<Hits>((v) => new Hits.fromJson(v)).toList()
答案 1 :(得分:0)
您可以通过添加 toList() 将您的 Vocabulary 数据转换为 List
List.from(data)
.map((x) => Vocabulary.fromJson(x))
.toList());