arrays - 如何解析json动态数组名
问题描述
需要解析这个具有动态数组 key 的 json。尝试使用每个键值语句,但仍然无法正常工作。
{
"68": [
{
"id": 173,
"user_id": 21
},
{
"id": 174,
"user_id": 21
}
],
"70": [
{
"id": 175,
"user_id": 21
},
{
"id": 176,
"user_id": 21
}
]
}
到目前为止,我试图像这样解析,但它不工作它给了我一个错误''未处理的异常:类型'List<dynamic>'
不是类型的子类型'Map<String, dynamic>'
''
class MyOrdersModel {
final List<MyOrders> myorders;
MyOrdersModel({
this.myorders,
});
factory MyOrdersModel.fromJson(Map<String, dynamic> parsedJson) {
var list = new List();
parsedJson.forEach((key, value){
list.add(value);
//print("array_key" + key);
});
print(list);
List<MyOrders> myorders = new List<MyOrders>();
myorders = list.map((i) => MyOrders.fromJson(i)).toList();
return new MyOrdersModel(myorders: myorders);
}
}
解决方案
您的json
数据:
1: {
2: "68": [
3: {"id": 173,"user_id": 21},
4: {"id": 174,"user_id": 21}],
5: "70": [
6: {"id": 175, "user_id": 21},
7: {"id": 176, "user_id": 21}]}
你的代码:
factory MyOrdersModel.fromJson(Map<String, dynamic> parsedJson) {
var list = new List();
// parsedJson = {"68": [{"id": 173,"user_id": 21}, {"id": 174,"user_id": 21}], "70": [{"id": 175, "user_id": 21}, {"id": 176, "user_id": 21}]}
parsedJson.forEach((key, value){
// First time: value = [{"id": 173,"user_id": 21}, {"id": 174,"user_id": 21}]
// Second time: value = [{"id": 175, "user_id": 21}, {"id": 176, "user_id": 21}]
list.add(value);
//print("array_key" + key);
});
print(list);
List<MyOrders> myorders = new List<MyOrders>();
// First time: i = [{"id": 173,"user_id": 21}, {"id": 174,"user_id": 21}]
// ★ => That's list => `Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>'`
myorders = list.map((i) => MyOrders.fromJson(i)).toList();
return new MyOrdersModel(myorders: myorders);
}
}
解决方案:
class MyOrdersModel {
final List<MyOrders> myorders;
MyOrdersModel({this.myorders});}
factory MyOrdersModel.fromJson(Map<String, dynamic> parsedJson) {
var list = new List();
parsedJson.forEach((key, value){
value.forEach((value) {
list.add(value);
});
});
print(list);
List<MyOrders> myorders = new List<MyOrders>();
myorders = list.map((i) => MyOrders.fromJson(i)).toList();
return new MyOrdersModel(myorders: myorders);
}
}
推荐阅读
- ios - 检索 UNNotificationAttachment 时 UIImage 未完全加载
- audio - 是否可以使用 ffmpeg 创建自定义形状?
- javascript - 使用 socket.off 后如何收听 socke.io
- c# - Linux 中 X509Certificate2.Handle 指向什么结构?
- php - 试图获取非对象 laravel 8 和 livewire 的属性“名称”
- javascript - 理解 Math.max()
- azure - 异常:'启动失败,因为混合工作人员在计划作业开始和最后记录时不可用
- encryption - gpgtar 错误错误存储文件“video.mp4”:提供的对象太大
- swiftui - 使用 onDelete 时使索引超出范围
- python - 具有 datetime64[ns] 值的堆积条形图。使用第一列作为起点