FormatException: Unexpected character (at character 2)

E/flutter (30548): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: FormatException: Unexpected character (at character 2)
E/flutter (30548): {data: [{image: http://gank.io/images/cfb4028bfead41e8b6e34057364969d1, tit...
E/flutter (30548):  ^
E/flutter (30548): 
E/flutter (30548): #0      _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1404:5)
E/flutter (30548): #1      _ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:934:48)
E/flutter (30548): #2      _parseJson (dart:convert-patch/convert_patch.dart:40:10)
E/flutter (30548): #3      JsonDecoder.convert (dart:convert/json.dart:506:36)
E/flutter (30548): #4      JsonCodec.decode (dart:convert/json.dart:157:41)
E/flutter (30548): #5      jsonDecode (dart:convert/json.dart:96:10)
E/flutter (30548): #6      testRouterState.build.<anonymous closure> (package:flutter_app/main.dart:53:54)
E/flutter (30548): <asynchronous suspension>
E/flutter (30548): 

以上为报错信息,使用的是dio网络请求框架和json_serializable

原来的写法 没有设置任何参数

                  Dio dio = new Dio();
                  var response = await dio.get('https://gank.io/api/v2/banners');
                  var _BannerInfo =
                      Banners.fromJson(jsonDecode(response.data.toString()));
                  print(_BannerInfo.status);

往dio源码里面找  里面有个参数是

  late BaseOptions options;

问题就是这个responseType了 继续看responseType

json:返回json格式

stream:以流的形式返回

plain:以字符串的方式返回

bytes:以字节的方式返回

可以看到返回值默认使用的是json  在返回过程中又进行了一次包装 导致解析失败 那么只需要设置option的参数即可 改成默认的字符串plain

                  Dio dio = new Dio();
                  var response = await dio.get('https://gank.io/api/v2/banners',
                      options: Options(responseType: ResponseType.plain));
                  var _BannerInfo =
                      Banners.fromJson(jsonDecode(response.data.toString()));
                  print(_BannerInfo.data[0].title);

再次运行 已经成功打印

Performing hot reload...
Syncing files to device Redmi K20 Pro...
Reloaded 0 libraries in 329ms.
I/flutter (31538): 干货集中营新版更新

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值