嵌套JSON遍历获取指定type对应全部review值的代码修正问题
问题修复方案
错误原因
你的代码问题出在循环体内直接执行return i,第一次遍历到review数组的第一个元素时就会终止函数执行,自然只能拿到第一条数据。同时注意type是Python内置关键字,不建议用作变量名,容易引发意料之外的错误。
修正代码
方案1:直接返回完整review数组(无额外处理需求时使用)
def get_object(self): number = self.kwargs['number'] exam_type = self.kwargs['type'] obj = get_object_or_404(self.queryset.filter(number=number)) # 筛选符合类型要求的考试记录,没匹配到则返回None target_exam = next(filter(lambda x: x["type"] == exam_type, obj.exams), None) # 没找到对应类型的记录时,可根据业务需求调整返回值或者抛出404 if not target_exam: return [] # 直接返回完整的review数组即可拿到全部数据 return target_exam['review']
方案2:需要对每条review做自定义处理时使用
def get_object(self): number = self.kwargs['number'] exam_type = self.kwargs['type'] obj = get_object_or_404(self.queryset.filter(number=number)) target_exam = next(filter(lambda x: x["type"] == exam_type, obj.exams), None) res = [] if target_exam: for item in target_exam['review']: # 此处可添加你需要的业务处理逻辑 res.append(item) return res
内容的提问来源于stack exchange,提问作者Flower
相关产品推荐
相关产品推荐

