未处理的异常:类型 'String' 不是类型转换中类型 'List<dynamic>' 的子类型



以下是我需要描述的代码

Future<void> fetchAndSetOrders() async {
const _myUrl =
'https://shop-960ca-default-rtdb.firebaseio.com/OrderContainer.json';
final response = await http.get(Uri.parse(_myUrl));
final extractedData = json.decode(response.body) as Map<String, dynamic>;
List<OrderModel> orderFromServer = [];
extractedData.forEach((key, value) {
print(value['orderList']);
orderFromServer.add(OrderModel(
dateTime: DateTime.parse(value['dateTime']),
orderCost: value['orderCost'],
orderedId: key,
orderedList: (value['orderList'] as List<dynamic>)
.map((e) => CartIModel(
cartId: e['cartId'],
cartPrice: e['cartPrice'],
cartTitle: e['cartTitle'],
cartQuantity: e['cartQuantity'],
))
.toList(),
));
});
_items = orderFromServer.reversed.toList();
notifyListeners();
}

打印结果:

从您提供的JSON示例中,orderList似乎是一个字符串,而不是列表

"({cartId: 2022-03-26 00:33:44.960313, cartTitle: Programmer, cartPrice: 56.0, cartQuantity: 1}, {cartId: 2022-03-26 00:33:46.964685, cartTitle: zoom5, cartPrice: 345.0, cartQuantity: 1})"

所以这不能被解析为列表

您的数据结构是:

{
"-Mz2--RzkrXgbGHA2pga" : {
"dateTime" : "2022-03-26T00:33:51.488931",
"orderCost" : 401.0,
"orderList" : "({cartId: 2022-03-26 00:33:44.960313, cartTitle: Programmer, cartPrice: 56.0, cartQuantity: 1}, {cartId: 2022-03-26 00:33:46.964685, cartTitle: zoom5, cartPrice: 345.0, cartQuantity: 1})"
}
}

因此,您所称的orderList实际上是一个字符串,而不是一个JSON对象。要进一步解码该字符串,您可以使用:

json.decode(value['orderList'] as String)

相关内容

最新更新