我在这里做了一个类似的帖子:问题,但我做了同样的事情,我一直是问题...
我有我的班级:
class PollQuestionsDto {
int id;
String entitled;
int difficulty;
List<Answer> answers;
PollQuestionsDto({this.id, this.entitled, this.difficulty, this.answers});
PollQuestionsDto.fromJson(Map<String, dynamic> json) {
id = json['id'];
entitled = json['entitled'];
difficulty = json['difficulty'];
if (json['answers'] != null) {
answers = new List<Answer>();
json['answers'].forEach((v) {
answers.add(new Answer.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['entitled'] = this.entitled;
data['difficulty'] = this.difficulty;
if (this.answers != null) {
data['answers'] = this.answers.map((v) => v.toJson()).toList();
}
return data;
}
}
ask API的方法:
Future<List<PollQuestionsDto>> getPollQuestions() async {
String url = 'http://10.0.2.2:3000/v1/api/poll/40/question?page=0';
//String url = 'http://10.0.2.2:3000/v1/api/poll/$idPoll/question?page=0';
String token = await Candidate().getToken();
final response = await http.get(url, headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Type': 'application/json; charset=utf-8',
'Accept': 'application/json',
'Authorization': 'Bearer $token',
});
if (response.statusCode == 200) {
print(jsonDecode(response.body));
/*List pollsList = jsonDecode(response.body) ;
List<PollQuestionsDto> polls = [];
for (var themeMap in pollsList) {
polls.add(PollQuestionsDto.fromJson(themeMap));
}
print(polls);
print('Get Poll ${response.body}');*/
} else {
throw Exception('Failed get poll questions');
}
}
当我询问我的API时,请求的结果是:
{结果:[{id:2,题为:语言利用率是多少?难度:1,答案:[{id:9,题为:Oui,isCorrect:true},{id:10,题为:Non,isCorrect:false}],页码:3,下一步:http://localhost:3000/v1/api/poll/40/question?page=1,先前:}
当我想要在列表中生成结果时,我有相同的错误:
_TypeError(类型“List”不是类型“Map”的子类型)
为什么啊?
您需要将json['答案']
转换为List
,如
if (json['answers'] != null) {
answers = (json['answers'] as List).map((v) => Answer.fromJson(v)).toList();
}
最好使用https://pub.dev/packages/json_annotation
而不是手动实现toJson
和fromJson
,除非您有特殊要求。
我能够解析以下字符串
[
{
"id": 1,
"entitled": "yes",
"difficulty": 1,
"answers": [
{
"value":"a"
}
]
}
]
使用
class PollQuestionsDto {
int id;
String entitled;
int difficulty;
List<Answer> answers;
PollQuestionsDto({this.id, this.entitled, this.difficulty, this.answers});
PollQuestionsDto.fromJson(Map<String, dynamic> json) {
id = json['id'];
entitled = json['entitled'];
difficulty = json['difficulty'];
if (json['answers'] != null) {
answers = new List<Answer>();
json['answers'].forEach((v) {
answers.add(new Answer.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['entitled'] = this.entitled;
data['difficulty'] = this.difficulty;
if (this.answers != null) {
data['answers'] = this.answers.map((v) => v.toJson()).toList();
}
return data;
}
@override String toString() => toJson().toString();
static List<PollQuestionsDto> arrayOfQuestionsFromJson(String json) {
return (jsonDecode(json) as List).map((e) => PollQuestionsDto.fromJson(e)).toList();
}
}
这是您所期望的吗(当我使用带有一个变量value
的Anser类时,您可能需要更改json作为答案)??
如果结果是
{
"results": [
{
"id": 2,
"entitled": "Le langage utilisé sous Flutter est le dart ?",
"difficulty": 1,
"answers": [
{
"id": 9,
"entitled": "Oui",
"isCorrect": true
},
{
"id": 10,
"entitled": "Non",
"isCorrect": false
}
]
}
],
"pageCount": 3,
"next": "http://localhost:3000/v1/api/poll/40/question?page=1"
}
您需要像这样添加['results']
:
List pollsList = jsonDecode(jsonstr)['results'];
我正在学习飞镖和颤振。现在,我尝试将JSON作为一种持久性方法。我犯了很多错误,都是关于类型和内容的。这是我遇到的最新错误:
需要你的帮助解决这个错误在Flutter...也如何在其他屏幕上使用这个回调的实例? 这是我的留言。json数据模型 我的消息是一个模型。飞奔 这是我的留言。飞奔 _TypeError(类型“List”不是类型“Map”的子类型
我对getruangfasiliti方法有问题。有没有办法修复这个错误?我已经为此工作了好几个星期了。 尝试这个,但它不是我想要的。我要得到这个物体的所有数据 下面是我的代码以及如何修复错误。我不知道我的错在哪里 模型Aduan.dart 阿杜安。飞奔 这是我的错误
我正在开发一个依靠API REST调用的flutter应用程序。来自API的响应有点复杂。当调用我的API(例如:api/产品)时,我可以从日志中看到响应:但是我有这个错误: 类型列表 StackTrace: [更新]:退货产品响应。fromJson(response)而不是response ProductsRespository: ProductsBloc: 回应: ApiProvider: 模
我有一个问题,因为2小时。我有这个错误,我看到了更多的主题,但我不能解决它。 消息:_TypeError(类型列表不是类型映射的子类型)颤动 我的模型: 我的主题屏幕: 我尝试了更多的教程和不同的主题,但我有相同的错误。。。 非常感谢。
当我试图获取数据从FIRESTAR,这个异常发生。_TypeError(类型列表不是类型字符串的子类型)我找不到问题的原因。请帮忙。