【发布时间】:2020-04-23 13:20:26
【问题描述】:
它是如何发生的?我认为它发生在我进行 json 映射时。它说异常:类型'int'不是'String'类型的子类型。我试过使用本地 json 资产文件,但没有什么不同。请帮我解决这个问题。
class Product {
int productId;
String productName;
String productPrice;
Product({this.productId, this.productName, this.productPrice});
Product.fromProduct(Product p) {
this.productId = p.productId;
this.productName = p.productName;
this.productPrice = p.productPrice;
}
factory Product.fromJson(Map<String, dynamic> parsedJson) {
return Product(
productId: parsedJson['ID'],
productName: parsedJson['Name'],
productPrice: parsedJson['SellPrice']);
}
}
Future<String> _loadAProductAsset() async {
var res = await http.get(Uri.encodeFull("http://10.0.2.2:9155/product"));
return json.encode(json.decode(res.body)["data"]);
}
List<Product> parseProduct(String myJson) {
final parsed = json.decode(myJson).cast<Map<String, dynamic>>();
return parsed.map<Product>((json) => Product.fromJson(json)).toList();
}
Future<List<Product>> fetchProduct() async {
await wait(1);
String jsonString = await _loadAProductAsset();
return compute(parseProduct, jsonString);
}
Future wait(int s) {
return new Future.delayed(Duration(seconds: s), () => {});
}
这是我来自 _loadAProductAsset() 函数的 json
[
{
"ID": 2,
"CreatedAt": "2020-01-06T03:56:32+07:00",
"UpdatedAt": "2020-01-06T03:56:32+07:00",
"DeletedAt": null,
"Name": "Product A",
"Category": "0",
"Stock": "50",
"StockUnit": "0",
"BuyPrice": "20000",
"SellPrice": "21000",
"SupplierID": "1"
}
]
【问题讨论】: