Dart:如何将CSV数据映射到模型列表?
比如说,在一个文件crops.csv中,我有一个简单的数据集,格式如下:Dart:如何将CSV数据映射到模型列表?,csv,flutter,dart,dart-pub,Csv,Flutter,Dart,Dart Pub,比如说,在一个文件crops.csv中,我有一个简单的数据集,格式如下: id,cropType,cropName 1,food,rice 2,cash,sugarcane 3,horticulture,orange 我有一个名为foodCrops的模型类: class foodCrops { int id; String cropType; String cropName; foodCrops(this.id, this.cropType, this.cropName);
id,cropType,cropName
1,food,rice
2,cash,sugarcane
3,horticulture,orange
我有一个名为foodCrops的模型类:
class foodCrops {
int id;
String cropType;
String cropName;
foodCrops(this.id, this.cropType, this.cropName);
}
如何将这些数据从csv文件转换为foodCrops类列表
List<foodCrops>
列表
最简单的方法可能是将文件作为行列表读取,然后使用map
执行转换
final crops=File.readAsLinesSync('path/to/crops.csv'))
.skip(1)//跳过标题行
.map((行){
最终零件=直线分割(',');
返回食物记录(
int.tryParse(第[0]部分),
第[1]部分,
第[2]部分:,
);
)
.toList();
在这里,我只是在解析行以生成FoodCrop
类的实例。您可以随意解析数据
void main() {
var foodCrops = makeFoodCropList();
for (var foodCrop in foodCrops) {
print(foodCrop);
}
}
List<FoodCrop> makeFoodCropList() {
var lines = [
'id,cropType,cropName',
'1,food,rice',
'2,cash,sugarcane',
'3,horticulture,orange',
];
lines.removeAt(0); //remove column heading
/*
* you can use any parser for csv file,
*
* a csv package is available
* or simple file reading will also get the job done main logic is coded here
* */
var list = <FoodCrop>[];
for (var line in lines) list.add(FoodCrop.fromList(line.split(',')));
return list;
}
class FoodCrop {
int id;
String cropType;
String cropName;
FoodCrop(this.id, this.cropType, this.cropName);
FoodCrop.fromList(List<String> items) : this(int.parse(items[0]), items[1], items[2]);
@override
String toString() {
return 'FoodCrop{id: $id, cropType: $cropType, cropName: $cropName}';
}
}
void main(){
var foodCrops=makeFoodCropList();
for(foodCrop中的var foodCrop){
印刷品(foodCrop);
}
}
List makeFoodCropList(){
变量行=[
'id,cropType,cropName',
“1、食物、大米”,
“2,现金,甘蔗”,
“3,园艺,橙色”,
];
lines.removeAt(0);//删除列标题
/*
*您可以对csv文件使用任何解析器,
*
*csv软件包可用
*或者简单的文件读取也可以完成工作,主要逻辑在这里编码
* */
var列表=[];
对于(行中的变量行)list.add(FoodCrop.fromList(line.split('),'));
退货清单;
}
食品级{
int-id;
字型;
字符串cropName;
FoodCrop(this.id、this.cropType、this.cropName);
FoodCrop.fromList(列表项):这个(int.parse(项[0]),项[1],项[2]);
@凌驾
字符串toString(){
返回'FoodCrop{id:$id,cropType:$cropType,cropName:$cropName}';
}
}