如何开发基于include和sort_by规则的JSON列表数据筛选排序应用
JSON列表筛选排序功能实现方案
核心实现步骤
- 第一步:参数解析:分别读取原始数据集、
include筛选规则、sort_by排序规则三个输入 - 第二步:精确筛选:遍历每条数据,只有完全匹配
include规则中所有键值对的条目才会被保留 - 第三步:结果排序:按
sort_by指定的字段顺序对筛选后的数据做升序排序,支持多字段依次排序
可直接运行的Python实现
def process_json_data(raw_data: dict, rules: dict) -> dict: # 提取输入参数 data_list = raw_data.get("data", []) include_conditions = rules.get("condition", {}).get("include", []) sort_fields = rules.get("condition", {}).get("sort_by", []) # 执行include筛选 filtered = [] for item in data_list: is_match = True # 检查是否匹配所有筛选条件 for cond in include_conditions: for k, target_val in cond.items(): if item.get(k) != target_val: is_match = False break if not is_match: break if is_match: filtered.append(item) # 执行sort_by排序,字段不存在时默认用空字符串兜底避免报错 if sort_fields: filtered.sort(key=lambda x: tuple(x.get(field, "") for field in sort_fields)) return {"result": filtered} # 示例测试 if __name__ == "__main__": # 示例输入数据 input_data = { "data": [ {"name": "John", "email": "john2@mail.com"}, {"name": "John", "email": "john1@mail.com"}, {"name": "Jane", "email": "jane@mail.com"} ] } # 示例规则 rule = { "condition": {"include": [{"name": "John"}], "sort_by": ["email"]} } print(process_json_data(input_data, rule))
运行验证
执行上述代码输出结果和给出的预期完全一致:
{"result": [{"name": "John", "email": "john1@mail.com"}, {"name": "John", "email": "john2@mail.com"}]}
功能扩展提示
如果需要支持更复杂的筛选逻辑(比如大于、小于、模糊匹配等),可以扩展include规则的结构,增加操作符字段,比如{"name": "John", "op": "eq"}、{"age": 18, "op": "gt"},在筛选判断部分对应调整逻辑即可。
内容的提问来源于stack exchange,提问作者MC Tryasi
相关产品推荐
相关产品推荐

