Josn解析问题

来源:12-5 首页大接口Dao层实现和调用-2【Dao层设计】

慕粉3885757燕青

2019-07-03

class CommonModel {
  final String icon;
  final String title;
  final String url;
  final String statusBarColor;
  final bool hideAppBar;

  CommonModel(
      {this.icon, this.title, this.url, this.statusBarColor, this.hideAppBar});

  factory CommonModel.fromJson(Map<String, dynamic> json) {
    return CommonModel(
        icon: json['icon'],
        title: json['title'],
        url: json['url'],
        statusBarColor: json['statusBarColor'],
        hideAppBar: json['hideAppBar']
    );
 }
}

下面是我通过接口地址 http://www.devio.org/io/flutter_app/json/home_page.json
所请求到的json数据

{
  "config": {
    "searchUrl": "https://m.ctrip.com/restapi/h5api/searchapp/search?source=mobileweb&action=autocomplete&contentType=json&keyword=1"
  },
  "bannerList": [
    {
      "icon": "http://www.devio.org/io/flutter_app/img/banner/100h10000000q7ght9352.jpg",
      "url": "https://gs.ctrip.com/html5/you/travels/1422/3771516.html?from=https%3A%2F%2Fm.ctrip.com%2Fhtml5%2F"
    },
    {
      "icon": "https://dimg04.c-ctrip.com/images/300h0u000000j05rnD96B_C_500_280.jpg",
      "url": "https://m.ctrip.com/webapp/vacations/tour/detail?productid=3168213&departcityid=2&salecityid=2&from=https%3A%2F%2Fm.ctrip.com%2Fhtml5%2F"
    },
    {
      "icon": "http://pages.ctrip.com/hotel/201811/jdsc_640es_tab1.jpg",
      "url": "https://m.ctrip.com/events/jiudianshangchenghuodong.html?disable_webview_cache_key=1"
    },
    {
      "icon": "https://dimg03.c-ctrip.com/images/fd/tg/g1/M03/7E/19/CghzfVWw6OaACaJXABqNWv6ecpw824_C_500_280_Q90.jpg",
      "url": "https://m.ctrip.com/webapp/vacations/tour/detail?productid=53720&departcityid=2&salecityid=2&from=https%3A%2F%2Fm.ctrip.com%2Fhtml5%2F"
    }
  ],
  "localNavList": [
    {
      "icon": "http://www.devio.org/io/flutter_app/img/ln_ticket.png",
      "title": "鏅偣路鐜╀箰",
      "url": "https://m.ctrip.com/html5/ticket/",
      "statusBarColor": "19A0F0",
      "hideAppBar": true
    },
    {
      "icon": "http://www.devio.org/io/flutter_app/img/ln_weekend.png",
      "title": "鍛ㄨ竟娓�",
      "url": "https://m.ctrip.com/webapp/vacations/tour/around?&from=https%3A%2F%2Fm.ctrip.com%2Fhtml5%2F",
      "statusBarColor": "52149f",
      "hideAppBar": true
    },
    {
      "icon": "http://www.devio.org/io/flutter_app/img/ln_food.png",
      "title": "缇庨鏋�",
      "url": "https://m.ctrip.com/webapp/you/foods/address.html?new=1&ishideheader=true",
      "statusBarColor": "19A0F0",
      "hideAppBar": true
    },
    {
      "icon": "http://www.devio.org/io/flutter_app/img/ln_oneday.png",
      "title": "涓€鏃ユ父",
      "url": "https://dp.ctrip.com/webapp/activity/daytour",
      "hideAppBar": true
    },
    {
      "icon": "http://www.devio.org/io/flutter_app/img/ln_guide.png",
      "title": "褰撳湴鏀荤暐",
      "url": "https://m.ctrip.com/webapp/you/",
      "statusBarColor": "19A0F0",
      "hideAppBar": true
    }
  ],
  "gridNav": {
    "hotel": {
      "startColor": "fa5956",
      "endColor": "fa9b4d",
      "mainItem": {
        "title": "閰掑簵",
        "icon": "https://pic.c-ctrip.com/platform/h5/home/grid-nav-items-hotel.png",
        "url": "https://m.ctrip.com/webapp/hotel/",
        "statusBarColor": "4289ff"
      },
      "item1": {
        "title": "娴峰閰掑簵",
        "url": "https://m.ctrip.com/webapp/hotel/oversea/?otype=1",
        "statusBarColor": "4289ff"
      },
      "item2": {
        "title": "鐗逛环閰掑簵",
        "url": "https://m.ctrip.com/webapp/hotel/hotsale"
      },
      "item3": {
        "title": "鍥㈣喘",
        "url": "https://m.ctrip.com/webapp/tuan/?secondwakeup=true&dpclickjump=true",
        "hideAppBar": true
      },
      "item4": {
        "title": "姘戝 瀹㈡爤",
        "url": "https://m.ctrip.com/webapp/inn/index",
        "hideAppBar": true
      }
    },
    "flight": {
      "startColor": "4b8fed",
      "endColor": "53bced",
      "mainItem": {
        "title": "鏈虹エ",
        "icon": "https://pic.c-ctrip.com/platform/h5/home/grid-nav-items-flight.png",
        "url": "https://m.ctrip.com/html5/flight/swift/index"
      },
      "item1": {
        "title": "鐏溅绁�",
        "url": "https://m.ctrip.com/webapp/train/?secondwakeup=true&dpclickjump=true&from=https%3A%2F%2Fm.ctrip.com%2Fhtml5%2F#/index?VNK=4e431539",
        "hideAppBar": true
      },
      "item2": {
        "title": "鐗逛环鏈虹エ",
        "url": "https://m.ctrip.com/html5/flight/swift/index"
      },
      "item3": {
        "title": "姹借溅绁疯埞绁�",
        "url": "https://m.ctrip.com/html5/Trains/bus/",
        "hideAppBar": true
      },
      "item4": {
        "title": "涓撹溅路绉熻溅",
        "url": "https://m.ctrip.com/webapp/car/index?s=ctrip&from=https%3A%2F%2Fm.ctrip.com%2Fhtml5%2F",
        "hideAppBar": true
      }
    },
    "travel": {
      "startColor": "34c2aa",
      "endColor": "6cd557",
      "mainItem": {
        "title": "鏃呮父",
        "icon": "https://pic.c-ctrip.com/platform/h5/home/grid-nav-items-travel.png",
        "url": "https://m.ctrip.com/webapp/vacations/tour/vacations",
        "hideAppBar": true,
        "statusBarColor": "19A0F0"
      },
      "item1": {
        "title": "闂ㄧエ",
        "url": "https://m.ctrip.com/webapp/ticket/ticket",
        "statusBarColor": "19A0F0",
        "hideAppBar": true
      },
      "item2": {
        "title": "鐩殑鍦版敾鐣�",
        "url": "https://m.ctrip.com/html5/you/",
        "statusBarColor": "19A0F0",
        "hideAppBar": true
      },
      "item3": {
        "title": "閭疆鏃呰",
        "url": "https://m.ctrip.com/webapp/cruise/index",
        "hideAppBar": true
      },
      "item4": {
        "title": "瀹氬埗鏃呰",
        "url": "https://m.ctrip.com/webapp/dingzhi",
        "hideAppBar": true
      }
    }
  },
  "subNavList": [
    {
      "icon": "http://www.devio.org/io/flutter_app/img/sub_nav_wifi.png",
      "title": "WiFi鐢佃瘽鍗�",
      "url": "https://m.ctrip.com/webapp/activity/wifi",
      "hideAppBar": true
    },
    {
      "icon": "http://www.devio.org/io/flutter_app/img/sub_nav_visa.png",
      "title": "淇濋櫓路绛捐瘉",
      "url": "https://m.ctrip.com/webapp/tourvisa/entry",
      "hideAppBar": true
    },
    {
      "icon": "http://www.devio.org/io/flutter_app/img/sub_nav_exchange.png",
      "title": "澶栧竵鍏戞崲",
      "url": "https://dp.ctrip.com/webapp/forex/index?bid=2&1=1",
      "hideAppBar": true
    },
    {
      "icon": "http://www.devio.org/io/flutter_app/img/sub_nav_shopping.png",
      "title": "璐墿",
      "url": "https://m.ctrip.com/webapp/gshop/?ctm_ref=M_ps_2home_sl&bid=2&cid=3&pid=1",
      "hideAppBar": true
    },
    {
      "icon": "http://www.devio.org/io/flutter_app/img/sub_nav_guide.png",
      "title": "褰撳湴鍚戝",
      "url": "https://m.ctrip.com/webapp/vacations/pguider/homepage?secondwakeup=true&dpclickjump=true&from=https%3A%2F%2Fm.ctrip.com%2Fhtml5%2F",
      "hideAppBar": true
    },
    {
      "icon": "http://www.devio.org/io/flutter_app/img/sub_nav_freetravel.png",
      "title": "鑷敱琛�",
      "url": "https://dp.ctrip.com/webapp/vacations/idiytour/diyindex?navBarStyle=white",
      "hideAppBar": true
    },
    {
      "icon": "http://www.devio.org/io/flutter_app/img/sub_nav_play.png",
      "title": "澧冨鐜╀箰",
      "url": "https://dp.ctrip.com/webapp/activity/overseasindex",
      "hideAppBar": true
    },
    {
      "icon": "http://www.devio.org/io/flutter_app/img/sub_nav_lipin.png",
      "title": "绀煎搧鍗�",
      "url": "https://dp.ctrip.com/webapp/lipin/money",
      "hideAppBar": true
    },
    {
      "icon": "http://www.devio.org/io/flutter_app/img/sub_nav_credit.png",
      "title": "淇$敤鍗�",
      "url": "https://dp.ctrip.com/webapp/cc/index?bid=8&cid=1&pid=4"
    },
    {
      "icon": "http://www.devio.org/io/flutter_app/img/sub_nav_more.png",
      "title": "鏇村",
      "url": "https://dp.ctrip.com/webapp/more/",
      "hideAppBar": true
    }
  ],
  "salesBox": {
    "icon": "http://www.devio.org/io/flutter_app/img/sales_box_huodong.png",
    "moreUrl": "https://contents.ctrip.com/activitysetupapp/mkt/index/moreact",
    "bigCard1": {
      "icon": "https://dimg04.c-ctrip.com/images/700t0y000000m71h523FE_375_260_342.png",
      "url": "https://contents.ctrip.com/buildingblocksweb/special/membershipcard/index.html?sceneid=1&productid=14912&ishidenavbar=yes&pushcode=act_svip_hm31",
      "title": "娲诲姩"
    },
    "bigCard2": {
      "icon": "https://dimg04.c-ctrip.com/images/700a10000000portu2BAD_375_260_342.jpg",
      "url": "https://m.ctrip.com/webapp/you/livestream/plan/crhHotelList.html?liveAwaken=true&isHideHeader=true&isHideNavBar=YES&mktcrhcode=hotevent",
      "title": "娲诲姩"
    },
    "smallCard1": {
      "icon": "https://dimg04.c-ctrip.com/images/700b0z000000neoth8688_375_160_345.jpg",
      "url": "https://contents.ctrip.com/activitysetupapp/mkt/index/nbaafs?pushcode=IP_nbaafs004",
      "title": "娲诲姩"
    },
    "smallCard2": {
      "icon": "https://dimg04.c-ctrip.com/images/700w0z000000mogkyEF78_375_160_345.jpg",
      "url": "https://smarket.ctrip.com/webapp/promocode/add?source=5",
      "title": "娲诲姩"
    },
    "smallCard3": {
      "icon": "https://dimg04.c-ctrip.com/images/700a0t000000im512AB2C_375_160_345.jpg",
      "url": "https://smarket.ctrip.com/webapp/promocode/add?source=5",
      "title": "娲诲姩"
    },
    "smallCard4": {
      "icon": "https://dimg04.c-ctrip.com/images/700d0s000000htvwo16C4_375_160_345.jpg",
      "url": "https://smarket.ctrip.com/webapp/promocode/add?source=5",
      "title": "娲诲姩"
    }
  }
}

下面是我解析的时候报的错

 [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: NoSuchMethodError: The method '[]' was called on null.
E/flutter ( 4331): Receiver: null
E/flutter ( 4331): Tried calling: []("icon")
E/flutter ( 4331): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:50:5)
E/flutter ( 4331): #1      new CommonModel.fromJson (package:flutter_trip_app/model/common_model.dart:26:19)
E/flutter ( 4331): #2      new GridNavItem.fromJson (package:flutter_trip_app/model/grid_nav_model.dart:42:26)
E/flutter ( 4331): #3      new GridNavModel.fromJson (package:flutter_trip_app/model/grid_nav_model.dart:13:26)
E/flutter ( 4331): #4      new HomeModel.fromJson (package:flutter_trip_app/model/home_model.dart:42:29)
E/flutter ( 4331): #5      HomeDao.fetch (package:flutter_trip_app/dao/home_dao.dart:15:24)

基本上是解析的时候找不到 icon,

  final List<CommonModel> bannerList;
  final List<CommonModel> localNavList;
  final List<CommonModel> subNavList;

在请求下来的json中 这三个list 模型都不一样。

写回答

1回答

CrazyCodeBoy

2019-07-04

将你的项目上传到慕课网git仓库上,我帮你调试下

0
0

Flutter从入门到进阶 实战携程网App 一网打尽核心技术

解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。

4788 学习 · 3277 问题

查看课程