当前位置: 首页 > 知识库问答 >
问题:

_TypeError(类型“List”不是类型“Map”的子类型)

西门良才
2023-03-14

我正在学习飞镖和颤振。现在,我尝试将JSON作为一种持久性方法。我犯了很多错误,都是关于类型和内容的。这是我遇到的最新错误:\u TypeError(type)列表

这是一节课:

import './topic.dart';

class Subject {
  String name;
  int order;
  bool isMajor;
  List<Topic> topics;

  Subject({this.name, this.order, this.isMajor, this.topics});

  factory Subject.fromJSON(Map<String, dynamic> json) {
    if (json != null) {
      return Subject(
          name: json['name'],
          order: json['order'],
          isMajor: json['isMajor'],
          topics: [Topic.fromJSON(json['topics'])]);
    } else {
      return null;
    }
  }
}

主题类是:

import './content.dart';

class Topic {
  String name;
  int order;
  List<Content> contents;

  Topic({this.name, this.order, this.contents});

  factory Topic.fromJSON(Map<String, dynamic> json) {
    if (json != null) {
      return Topic(
          name: json['name'],
          order: json['order'],
          contents: [Content.fromJSON(json['contents'])]);
    } else {
      return null;
    }
  }
}

错误出现在这里:[Topic.fromJSON(json['主题')]

有人能帮忙吗?谢谢你!


共有1个答案

酆光熙
2023-03-14

主题应该是

topics: List<Topic>.from(json["topics"].map((x) => Topic.fromJson(x))),

因为你没有提供Content类,我假设它有nameorder属性
你可以使用subject=subjectFromJson(jsonString);来解析jsonString

全相关类

// To parse this JSON data, do
//
//     final subject = subjectFromJson(jsonString);

import 'dart:convert';

Subject subjectFromJson(String str) => Subject.fromJson(json.decode(str));

String subjectToJson(Subject data) => json.encode(data.toJson());

class Subject {
    String name;
    int order;
    bool isMajor;
    List<Topic> topics;

    Subject({
        this.name,
        this.order,
        this.isMajor,
        this.topics,
    });

    factory Subject.fromJson(Map<String, dynamic> json) => Subject(
        name: json["name"],
        order: json["order"],
        isMajor: json["isMajor"],
        topics: List<Topic>.from(json["topics"].map((x) => Topic.fromJson(x))),
    );

    Map<String, dynamic> toJson() => {
        "name": name,
        "order": order,
        "isMajor": isMajor,
        "topics": List<dynamic>.from(topics.map((x) => x.toJson())),
    };
}

class Topic {
    String name;
    int order;
    List<Content> contents;

    Topic({
        this.name,
        this.order,
        this.contents,
    });

    factory Topic.fromJson(Map<String, dynamic> json) => Topic(
        name: json["name"],
        order: json["order"],
        contents: List<Content>.from(json["contents"].map((x) => Content.fromJson(x))),
    );

    Map<String, dynamic> toJson() => {
        "name": name,
        "order": order,
        "contents": List<dynamic>.from(contents.map((x) => x.toJson())),
    };
}

class Content {
    String name;
    int order;

    Content({
        this.name,
        this.order,
    });

    factory Content.fromJson(Map<String, dynamic> json) => Content(
        name: json["name"],
        order: json["order"],
    );

    Map<String, dynamic> toJson() => {
        "name": name,
        "order": order,
    };
}
 类似资料:
  • 需要你的帮助解决这个错误在Flutter...也如何在其他屏幕上使用这个回调的实例? 这是我的留言。json数据模型 我的消息是一个模型。飞奔 这是我的留言。飞奔 _TypeError(类型“List”不是类型“Map”的子类型

  • 我在这里做了一个类似的帖子:问题,但我做了同样的事情,我一直是问题... 我有我的班级: ask API的方法: 当我询问我的API时,请求的结果是: {结果:[{id:2,题为:语言利用率是多少?难度:1,答案:[{id:9,题为:Oui,isCorrect:true},{id:10,题为:Non,isCorrect:false}],页码:3,下一步:http://localhost:3000/

  • 我对getruangfasiliti方法有问题。有没有办法修复这个错误?我已经为此工作了好几个星期了。 尝试这个,但它不是我想要的。我要得到这个物体的所有数据 下面是我的代码以及如何修复错误。我不知道我的错在哪里 模型Aduan.dart 阿杜安。飞奔 这是我的错误

  • 我正在开发一个依靠API REST调用的flutter应用程序。来自API的响应有点复杂。当调用我的API(例如:api/产品)时,我可以从日志中看到响应:但是我有这个错误: 类型列表 StackTrace: [更新]:退货产品响应。fromJson(response)而不是response ProductsRespository: ProductsBloc: 回应: ApiProvider: 模

  • 在这里,我试图创建一个未来的listview生成器,得到一条错误消息:_TypeError(type'List'不是type'Map'的子类型)flift。我需要在列表视图中获取帖子中的所有数据。使用JSON到dart转换器quicktype创建模型类。木卫一 未来电话 模型

  • 我从Firestore示例中复制了一段代码: 但是我得到了这个错误 这里出了什么问题?