Flutter中如何通过匹配两个API的JSON响应获取指定字段内容
职位查询匹配实现方案
我有两类API,一类返回所有已发布职位的响应,另一类返回用户已申请职位的响应。我的实现思路是先将所有职位的响应存入列表,再将已申请职位的jobID存储为int类型变量,通过for循环匹配索引与jobID即可获取对应的职位名称。
获取所有职位响应的方法
List<String> allJobsList = []; Future<List<dynamic>> getAllJobsData() async { String url = 'https://hospitality92.com/api/jobsbycategory/All'; var response = await http.get(Uri.parse(url), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }); allJobsList.add(json.decode(response.body)['jobs'].toString()); // 所有职位响应将被添加到该列表中 return json.decode(response.body)['jobs']; }
获取用户已申请职位的方法
Future<List<dynamic>> getUSerAppliedJobs() async { String url = 'https://hospitality92.com/api/getappliedjobs/10'; // 这里的10为用户ID var response = await http.get(Uri.parse(url), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }); return json.decode(response.body)['jobs']; // 返回用户已申请的职位列表 }
匹配jobID获取职位名称的实现逻辑
上述两个方法用于通过匹配jobID获取职位名称,我将使用FutureBuilder获取响应并在ListView中展示,代码如下:
ListView.builder( padding: EdgeInsets.zero, shrinkWrap: true, itemCount: snapshot.data?.length, itemBuilder: (context, index) { var jobID = int.parse(snapshot.data![index]['job_id']) ; var getJobName = ""; for (int i = 0; i <= allJobsList.length; i++) { if (i == jobID) { var jobName = allJobsList.elementAt(i-2); getJobName = jobName; print(getJobName); break; } } }, ),
内容的提问来源于stack exchange,提问作者Usama Hafeez Official
相关产品推荐
相关产品推荐

