基于API的json响应的颤振foreach循环
我已在以下模型中转换了JSON响应:基于API的json响应的颤振foreach循环,json,flutter,dart,Json,Flutter,Dart,我已在以下模型中转换了JSON响应: VehicleList vehicleListFromJson(String str) => VehicleList.fromJson(json.decode(str)); String vehicleListToJson(VehicleList data) => json.encode(data.toJson()); class VehicleList { VehicleList({ this.vehicles, }
VehicleList vehicleListFromJson(String str) =>
VehicleList.fromJson(json.decode(str));
String vehicleListToJson(VehicleList data) => json.encode(data.toJson());
class VehicleList {
VehicleList({
this.vehicles,
});
List<Vehicle> vehicles;
factory VehicleList.fromJson(Map<String, dynamic> json) => VehicleList(
vehicles: List<Vehicle>.from(
json["vehicles"].map((x) => Vehicle.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"vehicles": List<dynamic>.from(vehicles.map((x) => x.toJson())),
};
}
class Vehicle {
Vehicle({
this.vehid,
this.vehname,
this.vehdescrip,
this.vehbodyopen,
this.vehbodyopenimg,
this.vehbodyclose,
this.vehbodycloseimg,
});
String vehid;
String vehname;
String vehdescrip;
String vehbodyopen;
String vehbodyopenimg;
String vehbodyclose;
String vehbodycloseimg;
factory Vehicle.fromJson(Map<String, dynamic> json) => Vehicle(
vehid: json["vehid"],
vehname: json["vehname"],
vehdescrip: json["vehdescrip"],
vehbodyopen: json["vehbodyopen"],
vehbodyopenimg: json["vehbodyopenimg"],
vehbodyclose: json["vehbodyclose"],
vehbodycloseimg: json["vehbodycloseimg"],
);
Map<String, dynamic> toJson() => {
"vehid": vehid,
"vehname": vehname,
"vehdescrip": vehdescrip,
"vehbodyopen": vehbodyopen,
"vehbodyopenimg": vehbodyopenimg,
"vehbodyclose": vehbodyclose,
"vehbodycloseimg": vehbodycloseimg,
};
}
VehicleList vehicleListFromJson(字符串str)=>
fromJson(json.decode(str));
字符串vehicleListToJson(VehicleList数据)=>json.encode(data.toJson());
等级车辆列表{
车辆列表({
这辆车,
});
列出车辆清单;
factory VehicleList.fromJson(映射json)=>VehicleList(
车辆:列表。来源(
json[“车辆”].map((x)=>Vehicle.fromJson(x)),
);
映射到JSON()=>{
“车辆”:列表.from(车辆.map((x)=>x.toJson()),
};
}
等级车辆{
车辆({
这个,维希德,
这是威纳姆,
这是vehdescrip,
这个,维伯约蓬,
这是我的车,
这是我的车,
这是vehbodycloseimg,
});
维希德;
弦维那姆;
字符串vehdescrip;
弦波波德约蓬;
串维氏体;
弦式双环;
管柱振动;
factory Vehicle.fromJson(Map json)=>Vehicle(
vehid:json[“vehid”],
vehname:json[“vehname”],
vehdescrip:json[“vehdescrip”],
vehbodyopen:json[“vehbodyopen”],
vehbodyopenimg:json[“vehbodyopenimg”],
vehbodyclose:json[“vehbodyclose”],
vehbodycloseimg:json[“vehbodycloseimg”],
);
映射到JSON()=>{
“维希德”:维希德,
“vehname”:vehname,
“vehdescrip”:vehdescrip,
“vehbodyopen”:vehbodyopen,
“vehbodyopenimg”:vehbodyopenimg,
“vehbodyclose”:vehbodyclose,
“VehbodCycloseimg”:VehbodCycloseimg,
};
}
我这样进行API调用:
Future<VehicleList> getVehicles() async {
var client = http.Client();
var vehicleModel = null;
try {
var response = await client.get(Uri.parse(Strings.getVehiclesUrl));
if (response.statusCode == 200) {
var jsonString = response.body;
var jsonMap = json.decode(jsonString);
vehicleModel = VehicleList.fromJson(jsonMap);
}
} catch (Exception) {
return vehicleModel;
}
return vehicleModel;
}
Future getVehicles()异步{
var client=http.client();
var vehicleModel=null;
试一试{
var response=wait client.get(Uri.parse(Strings.getVehiclesUrl));
如果(response.statusCode==200){
var jsonString=response.body;
var jsonMap=json.decode(jsonString);
vehicleModel=VehicleList.fromJson(jsonMap);
}
}捕获(例外){
返回车辆模型;
}
返回车辆模型;
}
现在,我需要在此基础上实现for-each循环,以检查键“vehbodyopen”的值是“Y”还是“N”,并为它们创建单独的数组或对象,然后在ListViewBuilder小部件中显示它们
我是个新手。我来自javascript背景。我通过在json响应中执行每个循环并将它们存储在两个不同的数组中,解决了javascript中的问题。如果可能的话,我会在颤振和省道中寻找相同的解决方案。for(int i=0;ifor (int i = 0; i < vehicleModel.length; i++) {
if(vehicleModel[i].vehbodyopen == "Y"){
//do stuff
}else{
//do another stuff
}
}
if(车辆模型[i].vehbodyopen==“Y”){
//做事
}否则{
//做另一件事
}
}
您可以试试这个我找到了一个可能的解决方案,我不得不在车辆模型中循环查看车辆列表
List vehList = vehicleModel.vehicles;
List openVehList = [];
List closedVehList = [];
for (var veh in vehList) {
print('executing foreach');
if (veh.vehbodyopen == "Y") {
openVehList.add(veh);
} else {
closedVehList.add(veh);
}
}
嘿,谢谢你的建议,我尝试了你的解决方案,但我无法得到车辆模型的长度。因此for循环没有执行。车辆模型为VehicleList类型。感谢您的输入。我通过修改你的答案找到了解决办法。