我想從保存在“訊息”中的 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'
uj5u.com熱心網友回復:
這是我對正在發生的事情以及如何解決它的猜測:
extractedData.forEach((id, data) {
print(data["message"].toString());
});
上面的幾行是說,對于我地圖上的每個鍵 ( id) 和值 ( data),將值的message屬性列印為字串,資料將在 for each 回圈的每次迭代中具有以下值:
extractedData['message']
extractedData['status']
這意味著您要列印的內容將等于:
extractedData['message']['message']
和
extractedData['status']['message']
兩者都不存在。
為了解決這個問題,只需放棄 for-each 回圈:
print(extractedData['message']);
或者,如果您想使用 for each-loop,您可以列印所有值:
extractedData.foreach((key, value) {
print('$key -> $value');
});
哪個應該列印
message -> https://images.dog.ceo/breeds/sheepdog-english/n02105641_277.jpg
status -> success
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/362405.html
下一篇:如何在沒有回溯的例外中引發例外?
