我想通過 Flutter 對模型進行單元測驗。然后我想使用測驗json資料。
但我收到了錯誤資訊。
type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>' in type cast
我想知道如何解決這個問題。
這是測驗代碼。
void main() {
group('Gift Test', () {
test('Gift model test', () {
final file = File('json/gift_test.json').readAsStringSync();
final gifts = Gift.fromJson(jsonDecode(file) as Map<String, dynamic>);
expect(gifts.id, 999);
});
});
}
這是模型
@freezed
abstract class Gift with _$Gift {
@Implements(BaseModel)
const factory Gift({
int id,
String name,
int amount,
Image image,
}) = _Gift;
factory Gift.fromJson(Map<String, dynamic> json) => _$GiftFromJson(json);
}
這是測驗資料。
[
{
"id": 999,
"name": "testest",
"amount": 30000,
"image": {
"id": 9999,
"image": {
"url": "https://text.jpg",
},
},
}
]
uj5u.com熱心網友回復:
您的 json 檔案是一個串列,而不是一個物件,或者您將 json 檔案更改為
{
"id": 999,
"name": "testest",
"amount": 30000,
"image": {
"id": 9999,
"image": {
"url": "https://text.jpg",
},
},
}
或者您需要更新代碼以獲取串列的第一個元素:
final file = File('json/gift_test.json').readAsStringSync();
final gifts = Gift.fromJson((jsonDecode(file) as List).first as Map<String, dynamic>);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/460512.html
