【问题标题】:Flutter - Unhandled Exception: FormatException: Unexpected character (at character 1) | Instance of ResponseFlutter - 未处理的异常:FormatException:意外字符(在字符 1 处)|响应实例
【发布时间】:2019-12-31 04:59:07
【问题描述】:

当我得到一个 api 时,控制台显示如下错误

E/flutter (10838): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] 未处理异常:FormatException:意外字符(在字符 1 处)

E/flutter (10838):“响应”实例

E/颤振(10838):^

E/颤动(10838):

这就是我获取 api 的方式

 Future _fetchPost() async {
    http.Response response = await http.get(url);

    if (response.statusCode == 200) {
      print(response.statusCode);
      print(json.decode(response.body));
    } else {
      print(response.statusCode);
    }

    setState(() {
      String jsonsDataString = response.toString();
      _data = jsonDecode(jsonsDataString);
      print(_data.toString());
    });

    return "Success";
  }

状态码返回200和部分api

我/颤振(10838):200

I/flutter (10838): [{restaurant_id: 1010000001, restaurant_name: 咖啡厅、餐厅_图片: http://.unicomerp./1010000001.jpg, table_id:1,table_name:利雅得-e 01,branch_name:我 哈,nurl: http://snapittaitt.net/api/menu/10/?org=000001&branch_id=100it=10&offset=20&lang=en, table_menu_list:[{menu_category:沙拉和汤,menu_category_id: 11、menu_category_image: http://res.net/iRet/Item/ItemGroup_11.jpg, 下一个网址: http://snapittappt.net/api/menu/20/?org=1010000001&branch_id=10000001&menuCat=it=10&offset=20&lang=en, category_dishes:[{dish_id:100001,dish_name:菠菜沙拉, 菜价格:7.95,菜图片: http://restaurants.umerp.net///1000000/Items/100000001.jpg, disc_currency:SAR,dish_calories:15.0,dish_description:新鲜 菠菜、蘑菇和硬蛋配热培根 香醋,dish_Availability:真,dish_Type:2,nexturl: http://snapitt

E/flutter (10838): [错误:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:FormatException:意外字符(在 字符 1)

E/flutter (10838):“响应”实例

E/颤动(10838):^

E/颤动(10838):

如何解决这个问题以实现获取所有 api?

任何建议都会有所帮助:)

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    改变这个:

    String jsonsDataString = response.toString(); // Error: toString of Response is assigned to jsonDataString.
    _data = jsonDecode(jsonsDataString);
    print(_data.toString());
    

    到这里:

    String jsonsDataString = response.body.toString(); // toString of Response's body is assigned to jsonDataString
    _data = jsonDecode(jsonsDataString);
    print(_data.toString());
    

    希望对你有帮助,如有疑问请评论。

    【讨论】:

    • 获取成功,但从 get api 获取数据时响应数据未在颤振中获取。
    【解决方案2】:

    哦,我找到了这个案例。这样,我将使用将输入转换为这样的字符串响应:

    String responseapi = response.body.toString().replaceAll("\n","");
    _data = jsonDecode(responseapi);
    print(_data);
    

    非常感谢帮助我的朋友

    【讨论】:

      【解决方案3】:

      我也遇到了同样的问题,但原因不同。由于这是一个非常常见的问题,我认为在这里提及它会帮助其他寻求解决方案的人寻找相同的问题。

      我传递了 JSON 的 Map,其中需要 String。所以,我这样做了:

      json.encode(variableWithMapData)
      

      我的问题解决了。

      【讨论】:

      • 真正正确的答案或完整答案的一部分是这样的。如果您希望稍后将 JSON 字符串解码为 JSON 字符串,那么将 JSON 字符串转换为字符串的最佳方法是使用 json.encode 否则它将从结果字符串中删除基本字符,并且您'将永远无法使用 Flutter import 'dart:convert'; 包的 json.decode 方法对其进行解码。
      猜你喜欢
      • 2020-03-07
      • 1970-01-01
      • 1970-01-01
      • 2022-11-07
      • 1970-01-01
      • 2021-10-20
      • 2019-09-04
      • 2021-07-31
      • 2019-12-19
      相关资源
      最近更新 更多