Flutter - 未处理的异常:FormatException: Unexpected character (at character 1) | 响应实例

All*_*son 3 dart flutter

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

E/flutter (10838): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:FormatException: Unexpected character (at character 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";
  }
Run Code Online (Sandbox Code Playgroud)

状态码返回 200 和一些 api

I/扑(10838):200

I /扑(10838):[{restaurant_id:1010000001,RESTAURANT_NAME:咖啡,restaurant_image: HTTP://.unicomerp./1010000001.jpg,table_id的:1,表名:利雅德-E 01,branch_name:我CAH,nurl: HTTP ://snapittaitt.net/api/menu/10/有机= 000001&branch_id = 100it = 10&偏移量= 20&郎=恩?,table_menu_list:[{menu_category:沙拉和汤,menu_category_id:11,menu_category_image: http://res.net/ iRet/Item/ItemGroup_11.jpg , nexturl: http://snapittappt.net/api/menu/20/?org=1010000001&branch_id=10000001&menuCat=it=10&offset=20&lang=en , category_dishes: [{1dish0_0_0沙拉,dish_price:7.95,dish_image:http ://restaurants.umerp.net//1000000/Items/100000001.jpg ,dish_currency: SAR,dish_calories: 15.0,dish_description: 新鲜菠菜、蘑菇和硬蛋配热培根香醋,dish_Availability: true,dish_Type: 2, nexturl: http://snapitt

E/flutter (10838): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:FormatException: Unexpected character (at character 1)

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

E/扑(10838):^

E/扑(10838):

我该如何解决这个问题以获取所有 api?

任何的意见都将会有帮助:)

Zih*_*han 8

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

我在需要的地方传递了MapJSON 。String所以,我这样做了:

json.encode(variableWithMapData)
Run Code Online (Sandbox Code Playgroud)

我的问题解决了。

  • 真正正确的答案或完整答案的一部分是这样的。如果您希望稍后将 JSON 字符串解码为 JSON 字符串,那么将 JSON 字符串转换为字符串的最佳方法是使用“json.encode”,否则它将从结果字符串中删除必要的字符,并且您将永远无法使用 Flutter `import 'dart:convert';` 包的 `json.decode` 方法对其进行解码。 (2认同)

Kal*_*ani 7

改变这个:

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

对此:

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

我希望这会有所帮助,如有任何疑问,请发表评论。