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仓库上,我帮你调试下
00
相似问题