草庐IT

flutter - 如何解决 List<dynamic> is not a subtype of type 'Map<String, dynamic>?

coder 2023-07-23 原文

错误说它无法创建 ApplicableFlight FlightSegmentReference 有问题 List dynamic is not a subtype of type 'Map String, dynamic

这是使用json.decodefromJson的地方

var map = json.decode(response.body) as Map<String, dynamic>;
ResponseGate responseGate = new ResponseGate.fromJson(map);

这是 json.decode 的输出片段

..,ApplicableFlight: {FlightReferences: F1,FlightSegmentReference: {ref: 0199,ClassOfService: {refs:ABCD,Code: {SeatsLeft: 6,content: Z},MarketingName:world}},OriginDestinationReferences:FF},

response.body 如下所示:

 { ..,
   {
                                    "ApplicableFlight": {
                                        "FlightReferences": "F1",
                                        "FlightSegmentReference": {
                                            "ref": "0199",
                                            "ClassOfService": {
                                                "refs": "FBCODE1ADT",
                                                "Code": {
                                                    "SeatsLeft": 7,
                                                    "content": "Z"
                                                },
                                                "MarketingName": "world"
                                            }
                                        },
                                        "OriginDestinationReferences": "FF"
                                    }
                                },}

这是定义对象和ResponseGate.fromJson(map)寻找

x. Dart

@JsonSerializable()
class ResponseGate {
  @JsonKey(name: "Offer")
  List<Offer> offer;

  ResponseGate(this.offer);
  factory ResponseGate.fromJson(Map<String, dynamic> json) =>
      _$ResponseGateFromJson(json);
 }

 @JsonSerializable()
 class Offer {
 @JsonKey(name: "PricedOffer")
  PricedOffer pricedOffer;

  Offer(this.pricedOffer);
  factory Offer.fromJson(Map<String, dynamic> json) =>
      _$OfferFromJson(json);
}


  @JsonSerializable()
    class PricedOffer {
      @JsonKey(name: "Associations")
      List<Associates> listOfAssociations;


      PricedOffer(this.listOfAssociations);
      factory PricedOffer.fromJson(Map<String, dynamic> json) =>
          _$PricedOfferFromJson(json);
    }

@JsonSerializable()
class Associates {
  @JsonKey(name: "ApplicableFlight")
  ApplicableFlight applicableFlight;

  Associates(this.applicableFlight);
  factory Associates.fromJson(Map<String, dynamic> json) =>
      _$AssociatesFromJson(json);
}
@JsonSerializable()
class ApplicableFlight {
  @JsonKey(name: "FlightReferences")
  var flightReference;
  @JsonKey(name: "FlightSegmentReference")
  FlightSegmentReference flightSegmentReference;

  @JsonKey(name: "OriginDestinationReferences")
  var originDestinationReferences;

  ApplicableFlight(this.flightReference, this.flightSegmentReference,
      this.originDestinationReferences);

  factory ApplicableFlight.fromJson(Map<String, dynamic> json) =>
      _$ApplicableFlightFromJson(json);
}

@JsonSerializable()
class FlightSegmentReference {
  @JsonKey(name: "ref")
  var ref;
  @JsonKey(name: "ClassOfService")
  ClassOfService classOfService;

  FlightSegmentReference(this.ref, this.classOfService);

  factory FlightSegmentReference.fromJson(Map<String, dynamic> json) =>
      _$FlightSegmentReferenceFromJson(json);
}

@JsonSerializable()
class ClassOfService {
  @JsonKey(name: "refs")
  var refs;
  @JsonKey(name: "Code")
  Code code;
  @JsonKey(name: "MarketingName")
  var marketingName;

  ClassOfService(this.refs, this.code, this.marketingName);
  factory ClassOfService.fromJson(Map<String, dynamic> json) =>
      _$ClassOfServiceFromJson(json);
}

@JsonSerializable()
class Code {
  @JsonKey(name: "SeatsLeft")
  var seatLeft;
  @JsonKey(name: "content")
  var content;

  Code(this.seatLeft, this.content);
  factory Code.fromJson(Map<String, dynamic> json) => _$CodeFromJson(json);
}

x.g.dart

ApplicableFlight _$ApplicableFlightFromJson(Map<String, dynamic> json) 

{
  return $checkedNew('ApplicableFlight', json, () {
    $checkKeys(json, allowedKeys: const [
      'FlightReferences',
      'FlightSegmentReference',
      'OriginDestinationReferences'
    ]);
    final val = ApplicableFlight(
        $checkedConvert(json, 'FlightReferences', (v) => v),
        $checkedConvert(
            json,
            'FlightSegmentReference',
            (v) => v == null
                ? null
                : FlightSegmentReference.fromJson(v as Map<String, dynamic>)),
        $checkedConvert(json, 'OriginDestinationReferences', (v) => v));
    return val;
  }, fieldKeyMap: const {
    'flightReference': 'FlightReferences',
    'flightSegmentReference': 'FlightSegmentReference',
    'originDestinationReferences': 'OriginDestinationReferences'
  });
}

FlightSegmentReference _$FlightSegmentReferenceFromJson(
    Map<String, dynamic> json) {
  return $checkedNew('FlightSegmentReference', json, () {
    $checkKeys(json, allowedKeys: const ['ref', 'ClassOfService']);
    final val = FlightSegmentReference(
        $checkedConvert(json, 'ref', (v) => v),
        $checkedConvert(
            json,
            'ClassOfService',
            (v) => v == null
                ? null
                : ClassOfService.fromJson(v as Map<String, dynamic>)));
    return val;
  }, fieldKeyMap: const {'classOfService': 'ClassOfService'});
}

ClassOfService _$ClassOfServiceFromJson(Map<String, dynamic> json) {
  return $checkedNew('ClassOfService', json, () {
    $checkKeys(json, allowedKeys: const ['refs', 'Code', 'MarketingName']);
    final val = ClassOfService(
        $checkedConvert(json, 'refs', (v) => v),
        $checkedConvert(json, 'Code',
            (v) => v == null ? null : Code.fromJson(v as Map<String, dynamic>)),
        $checkedConvert(json, 'MarketingName', (v) => v));
    return val;
  }, fieldKeyMap: const {'code': 'Code', 'marketingName': 'MarketingName'});
}

Code _$CodeFromJson(Map<String, dynamic> json) {
  return $checkedNew('Code', json, () {
    $checkKeys(json, allowedKeys: const ['SeatsLeft', 'content']);
    final val = Code($checkedConvert(json, 'SeatsLeft', (v) => v),
        $checkedConvert(json, 'content', (v) => v));
    return val;
  }, fieldKeyMap: const {'seatLeft': 'SeatsLeft'});
}

已更新

我查看了 api 响应,发现 FlightSegmentReference 以两种不同的方式出现,如下所示。我该如何设计这样的格式?

{
"Offer": [
    {
        "PricedOffer": {
            "Associations": [
                {
                    "ApplicableFlight": {
                        "FlightReferences": "Flight1",
                        "FlightSegmentReference": {
                            "ref": "99",
                            "ClassOfService": {
                                "refs": "ADT",
                                "Code": {
                                    "SeatsLeft": 9,
                                    "content": "J"
                                },
                                "MarketingName": " World"
                            }
                        },
                        "OriginDestinationReferences": "OD1"
                    }
                },
                {
                    "ApplicableFlight": {
                        "FlightReferences": "Flight11",
                        "FlightSegmentReference": {
                            "ref": "BA0138",
                            "ClassOfService": {
                                "refs": "FBCODE1ADT",
                                "Code": {
                                    "SeatsLeft": 9,
                                    "content": "J"
                                },
                                "MarketingName": "Club World"
                            }
                        },
                        "OriginDestinationReferences": "OD2"
                    }
                }
            ]
        }
    },
    {
        "PricedOffer": {
            "Associations": [
                {
                    "ApplicableFlight": {
                        "FlightReferences": "Fl",
                        "FlightSegmentReference": [
                            {
                                "ref": "02",
                                "ClassOfService": {
                                    "refs": "FBCODE2ADT",
                                    "Code": {
                                        "SeatsLeft": 9,
                                        "content": "J"
                                    },
                                    "MarketingName": "Club World"
                                }
                            },
                            {
                                "ref": "58",
                                "ClassOfService": {
                                    "refs": "1ADT",
                                    "Code": {
                                        "SeatsLeft": 9,
                                        "content": "J"
                                    },
                                    "MarketingName": "B"
                                }
                            }
                        ],
                        "OriginDestinationReferences": "1"
                    }
                },
                {
                    "ApplicableFlight": {
                        "FlightReferences": "Fl11",
                        "FlightSegmentReference": {
                            "ref": "8",
                            "ClassOfService": {
                                "refs": "E1ADT",
                                "Code": {
                                    "SeatsLeft": 9,
                                    "content": "J"
                                },
                                "MarketingName": "orld"
                            }
                        },
                        "OriginDestinationReferences": "O"
                    }
                }
            ]
        }
    }
]}

最佳答案

 List<dynamic> areas = new List();
 areas = json.decode(response.body);
 String _mySelection1;
 Container(
        height: 50,
        child: DropdownButton<String>(
          isExpanded: true,
          isDense: true,
          hint: new Text("Select Location"),
          value: _mySelection1,
          onChanged:(String newValue) {
            setState(() {
              _mySelection1 = newValue;
            });
            print (_mySelection1);
          },
          items: areas.map((map){
            return DropdownMenuItem<String>(
              value: map["area_id"],
              child: Text(
                map["name"],
              ),
            );
          }).toList(),
        ),
      ),

这是解决此类问题的示例。我的 json 也收到 Mam 响应。但我是这样处理的。希望这个例子对你有帮助。这是我的回复。

[{"id":"1","name":"Dermatology"},{"id":"2","name":"Cancer of Female Reproductive System"},{"id":"3","name":"Cardiology"},{"id":"4","name":"Dentistry"},{"id":"5","name":"Allergy & Immunology"},{"id":"6","name":"Anesthesia"},{"id":"7","name":"Colorectal Surgery"},{"id":"8","name":"Endocrinology (Diabetes, Hormones, Thyroid, etc.)"},{"id":"9","name":"ENT (Ear, Nose & Throat, Otorhinolaryngology)"},{"id":"10","name":"Gastroenterology (Stomach, Pancreas and Intestine)"},{"id":"11","name":"General Physician"}]

关于flutter - 如何解决 List<dynamic> is not a subtype of type 'Map<String, dynamic>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57324930/

有关flutter - 如何解决 List<dynamic> is not a subtype of type 'Map<String, dynamic>?的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  5. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  6. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  7. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  8. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  9. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  10. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

随机推荐