颤振:如何解析对象数组的JSON数组

颤振:如何解析对象数组的JSON数组,json,flutter,dart,Json,Flutter,Dart,有人能告诉我如何解析颤振中对象数组的数组吗。当我解析json时,我得到的错误如下 列表不是Map类型的子类型 我曾经编写过模型类,我试图在将来打印工作表数据,但我遇到了错误。下面是我需要解析的json文件。请帮我解决这个问题。从两天以来一直卡住 [ { "_id": "5ebae61440315c41995eccc7", "projectName": "NSM", "sheetName": "Priliminaries - A1",

有人能告诉我如何解析颤振中对象数组的数组吗。当我解析json时,我得到的错误如下
列表不是Map类型的子类型

我曾经编写过模型类,我试图在将来打印工作表数据,但我遇到了错误。下面是我需要解析的json文件。请帮我解决这个问题。从两天以来一直卡住

[
    {
        "_id": "5ebae61440315c41995eccc7",
        "projectName": "NSM",
        "sheetName": "Priliminaries - A1",
        "worksheetData": [
            [
                {
                    "serial": "Sl.No",
                    "description": "ITEM DESCRIPTION",
                    "quantity": "QTY.",
                    "unit": "UNIT",
                    "unitrate": "UNIT PRICE",
                }
            ],
            null,
            [
                {
                    "serial": "1.1",
                    "description": "Allowance for CAR policy, Mobilization, demobilization after works, Firstaid boxes, Fire extinguishers etc.",
                    "quantity": 1,
                    "unit": "Lot",
                    "unitrate": 12500,
                }
            ],
            [
                {
                    "serial": "1.2",
                    "description": "Demolition of existing gypsum partitions, ceilings, necessary floor tiles etc and cart away debris if any",
                    "quantity": 0,
                    "unit": "Lot",
                    "unitrate": 5000,
                }
            ]
        ],
        "__v": "0"
    },
    {
        "_id": "5ebae61440315c41995eccc8",
        "projectName": "NSM",
        "sheetName": "General works -A2",
        "worksheetData": [
            [
                {
                    "serial": "Sl.No",
                    "description": "ITEM DESCRIPTION",
                    "quantity": "QTY.",
                    "unit": "UNIT",
                    "unitrate": "UNIT PRICE",
                }
            ],
            null,
            [
                {
                    "serial": "1.1",
                    "description": "Allowance for CAR policy, Mobilization, demobilization after works, Firstaid boxes, Fire extinguishers etc.",
                    "quantity": 1,
                    "unit": "Lot",
                    "unitrate": 12500,
                }
            ],
            [
                {
                    "serial": "1.2",
                    "description": "Demolition of existing gypsum partitions, ceilings, necessary floor tiles etc and cart away debris if any",
                    "quantity": 0,
                    "unit": "Lot",
                    "unitrate": 5000,
                }
            ]
        ],
        "__v": "0"
    }
]
主飞镖

class WorkSheet extends StatefulWidget {
  const WorkSheet({Key key}) : super(key: key);
  @override
  _WorkSheetState createState() => new _WorkSheetState();
}

class _WorkSheetState extends State<WorkSheet> {
  // List<ArticleslistData> articleslist = [];
  // List<ArticleslistData> list;

  @override
  void initState() {
    setState(() {
      loadSheetDataFromAssets();
    });
    super.initState();
  }

  Future loadSheetDataFromAssets() async {
    var jsonData = await rootBundle.loadString('assets/Vibyor.json');
    var data = json.decode(jsonData);
    ArticleslistData articleslistData = new ArticleslistData.fromJson(data);
     print('data : ${articleslistData.worksheetData[0]}');
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Work sheet data'),
      ),
      body: FutureBuilder(
          future: loadSheetDataFromAssets(),
          builder: (context, snapshot) {
            return snapshot.data != null
                ? Text(snapshot.data)
                : Center(child: CircularProgressIndicator());
          }),
    );
  }
}
类工作表扩展StatefulWidget{
常量工作表({Key}):超级(Key:Key);
@凌驾
_工作表状态createState()=>新建工作表状态();
}
类_工作表状态扩展状态{

//列表

我重构了您的类:

class ArticleslistData{
字符串sId;
字符串projectName;
字符串名称;
列出工作表数据=[];
串sV;
ArticleslistData(this.sId、this.projectName、this.sheetName、this.worksheetData、this.sV);
静态ArticleslistData fromMap(地图地图){
列出工作表数据=[];
如果(映射['worksheetData']!=null){
用于(地图['worksheetData']中的可编辑行){
如果(row==null)继续;
用于(行中的贴图){
添加(worksheetData.fromMap(map));
}
}
}
返回ArticleslistData(
地图[''u id'],
映射['projectName'],
地图['sheetName'],
工作表数据,
地图
);
}
映射toMap(){
返回{
“_id”:this.sId,
“projectName”:this.projectName,
“sheetName”:this.sheetName,
“工作表数据”:this.worksheetData,
“_v”:this.sV
};
}
}
类工作表数据{
字符串序列;
字符串描述;
串数;
弦单元;
字符串单位;
工作表数据(this.serial、this.description、this.quantity、this.unit、this.unitrate);
来自地图的静态工作表数据(地图地图){
返回工作表数据(
map['serial'].toString(),
映射['description'].toString(),
映射['quantity'].toString(),
map['unit'].toString(),
映射['unitrate'].toString()
);
}
映射toMap(){
返回{
“连载”:这个,
“描述”:这个描述,
“数量”:这个,
“单位”:这个单位,
“单位汇率”:这是“单位汇率”
};
}
}
用法:

Future loadSheetDataFromAssets()异步{
var jsonData=await rootBundle.loadString('assets/Vibyor.json');
var data=json.decode(jsonData);
this.articleslist=[];

列表

将代码添加到问题请将类ArticlesListData添加到问题中,因为我不知道它有哪些字段。这是一个模型类,这会给我带来一个错误
\u TypeError(type'String'不是type'Iterable'的子类型)
在模型类打印(data)中;您看到了什么?在文件顶部导入'dart:convert',并使用:jsonDecode(jsonData)而不是json.decode仍然存在相同的问题
List<ArticleslistData> articleslist = [];