【问题标题】:Flutter Expected a value of type 'int', but got one of type 'String'Flutter 需要一个“int”类型的值,但得到一个“String”类型的值
【发布时间】:2021-12-27 18:59:34
【问题描述】:

我想从保存在“消息”中的 API 获取图片链接,但我不断收到相同的异常。

我怎样才能得到“消息”以及为什么它会抛出这个异常。

我的 API

{"message":"https:\/\/images.dog.ceo\/breeds\/sheepdog-english\/n02105641_277.jpg","status":"success"}


API LINK: https://dog.ceo/api/breeds/image/random

我的方法

Future<void> loadDog() async {

try {
  final response =
    await http.get(Uri.parse("https://dog.ceo/api/breeds/image/random"));
    final extractedData = json.decode(response.body) as Map<String, dynamic>;
    extractedData.forEach((id, data) {
      print(data["message"].toString());
    });
 } catch (err) {
print("ERROR = " + err.toString());
}

我的错误

ERROR = Expected a value of type 'int', but got one of type 'String'

【问题讨论】:

    标签: json flutter api dart exception


    【解决方案1】:

    这是我对正在发生的事情以及如何解决它的猜测:

    extractedData.forEach((id, data) {
          print(data["message"].toString());
    });
    

    上面的行是说,对于我地图上的每个键 (id) 和值 (data),将值的 message 属性打印为字符串,数据将具有以下值 for 的每次迭代每个循环:

    extractedData['message']
    extractedData['status']
    

    这意味着您尝试打印的内容将等于:

    extractedData['message']['message']
    

    和

    extractedData['status']['message']
    

    都不存在。

    为了解决这个问题,只需放弃 for-each 循环:

    print(extractedData['message']);
    

    或者如果你想使用 for each 循环,你可以打印所有值:

    extractedData.foreach((key, value) {
      print('$key -> $value');
    });
    

    应该打印的

    message -> https://images.dog.ceo/breeds/sheepdog-english/n02105641_277.jpg
    status -> success
    

    【讨论】:

    • 完美答案,非常感谢它的工作,很好的解释;)
    • 很高兴它帮助了你!
    猜你喜欢
    • 2021-03-16
    • 2021-11-26
    • 2022-12-05
    • 2022-01-08
    • 2021-09-18
    • 2021-09-13
    • 2020-12-03
    • 2021-11-02
    • 2021-07-13
    相关资源
    最近更新 更多