Flutter-未处理的异常:FormatException:意外的字符(在字符1处)响应实例

时间:2019-12-31 04:59:07

标签: flutter dart

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

  

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

     

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

     

E / flutter(10838):^

     

E / flutter(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

  

I / flutter(10838):200

     

I / flutter(10838):[{restaurant_id:1010000001,restaurant_name:   咖啡厅,restaurant_image:   http://.unicomerp./1010000001.jpg,   table_id:1,table_name:利雅得-e 01,branch_name:I   ah,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,   nexturl:   http://snapittappt.net/api/menu/20/?org=1010000001&branch_id=10000001&menuCat=it=10&offset=20&lang=en,   category_dishes:[{dish_id:100001,菜名:菠菜沙拉,   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:正确,dish_Type:2,nexturl:   http://snapitt

     

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

     

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

     

E / flutter(10838):^

     

E / flutter(10838):

如何解决此问题以获取所有api?

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

3 个答案:

答案 0 :(得分:0)

更改此:

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());

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

答案 1 :(得分:0)

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

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

非常感谢帮助我的朋友

答案 2 :(得分:0)

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

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

json.encode(variableWithMapData)

我的问题解决了。