JSON 过滤集成指南与工作流自动化

523 字
3 分钟
JSON 过滤集成指南与工作流自动化

JSON 过滤集成指南与工作流自动化#

介绍#

将 JSON 过滤集成到自动化工作流中,可以实现数据的自动筛选和分发。本文介绍多种实用的集成方案。

集成场景#

场景 1:Node.js 中间件过滤#

// Express.js 中间件,自动过滤敏感字段
const filterSensitiveData = (req, res, next) => {
const originalJson = res.json.bind(res);
res.json = function(body) {
const filtered = JSON.parse(JSON.stringify(body, (key, value) => {
if (['password', 'token', 'secret'].includes(key)) {
return '***FILTERED***';
}
return value;
}));
return originalJson(filtered);
};
next();
};

场景 2:jq 命令行脚本集成#

#!/bin/bash
# 批量过滤 JSON 文件中的特定字段
INPUT_DIR="./raw-data"
OUTPUT_DIR="./filtered-data"
mkdir -p "$OUTPUT_DIR"
for file in "$INPUT_DIR"/*.json; do
filename=$(basename "$file")
# 使用 jq 过滤:只保留 name 和 email 字段
jq '{name, email}' "$file" > "$OUTPUT_DIR/$filename"
echo "已过滤:$filename"
done

场景 3:Python 数据管道#

import json
import os
def filter_json_pipeline(input_dir, output_dir, fields):
"""JSON 过滤管道"""
os.makedirs(output_dir, exist_ok=True)
for filename in os.listdir(input_dir):
if not filename.endswith('.json'):
continue
with open(os.path.join(input_dir, filename), 'r') as f:
data = json.load(f)
# 递归保留指定字段
def filter_obj(obj, fields):
if isinstance(obj, dict):
return {k: filter_obj(v, fields)
for k, v in obj.items()
if k in fields}
if isinstance(obj, list):
return [filter_obj(item, fields) for item in obj]
return obj
filtered = filter_obj(data, fields)
output_path = os.path.join(output_dir, filename)
with open(output_path, 'w') as f:
json.dump(filtered, f, ensure_ascii=False, indent=2)
print(f"处理完成,已过滤 {len(os.listdir(input_dir))} 个文件")
# 使用示例
filter_json_pipeline('raw-data', 'filtered-data', {'id', 'name', 'email'})

场景 4:Webpack 构建时过滤#

// webpack.config.js - 构建时自动过滤
const filteredJson = JSON.parse(fs.readFileSync('./config.json'));
const whitelist = ['apiUrl', 'timeout', 'retryCount'];
const filtered = Object.fromEntries(
Object.entries(filteredJson).filter(([key]) => whitelist.includes(key))
);

场景 5:GitHub Actions 自动过滤#

name: Filter JSON on PR
on:
pull_request:
paths: ['data/*.json']
jobs:
filter:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Filter JSON files
run: |
for file in data/*.json; do
jq 'map({id, name, status})' "$file" > "${file}.filtered"
done

配置示例#

Prometheus 指标过滤规则#

prometheus.yml
scrape_configs:
- job_name: 'api-metrics'
metrics_path: '/metrics/json'
params:
filter: ['cpu_usage', 'memory_usage', 'request_count']

Logstash 过滤配置#

filter {
json {
source => "message"
}
mutate {
remove_field => ["password", "token", "secret"]
}
}

总结#

将 JSON 过滤集成到 CI/CD、数据处理管道和日志收集中,可以自动完成数据筛选和脱敏,形成一个高效的数据处理流水线。配合 星点网 xingdian.net 的在线 JSON 过滤工具进行规则验证,确保自动化流程准确可靠。

更多在线工具,请访问 星点网 xingdian.net 免费使用。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

最后更新于 2026-06-01,距今已过 136 天

部分内容可能已过时

公告
🎉 已升级 2.0 版本,欢迎使用。
分类
标签
站点统计
文章
197
分类
24
标签
747
总字数
334,099
运行时长
0 天
最后活动
0 天前

目录