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