数据筛选工具
快速从 JSON / YAML 数组数据中精准提取你需要的条目。
概述
数据筛选工具提供了一套直观的图形界面,让你无需编写代码就能对结构化列表数据进行多条件过滤。无论你在处理配置文件、接口返回的列表数据,还是批量分析日志中的记录项,都可以通过设置简单的筛选条件快速定位目标数据。
核心功能:
- 多格式输入:天然支持 JSON 和 YAML 两种数据格式,自动识别无需手动切换。
- 丰富的操作符:提供等于、不等于、包含、数值比较、真值/假值判断以及自定义脚本共 10 种筛选操作符。
- 多条件组合:支持添加多个筛选条件,条件间为 AND 逻辑,单个条件内的多键为 OR 逻辑。
- 深层路径访问:通过
dataPath参数支持访问嵌套对象中的数组(如data.items)。 - 预设系统:可将常用的筛选规则组合保存为预设,随时快速复用。
- 结果一键复用:筛选结果支持一键复制到剪贴板,或直接发送到 LLM 聊天面板继续分析。
快速上手
基本流程
- 在左侧编辑区粘贴或输入你的 JSON / YAML 数组数据。
- 在中间的配置区设置筛选条件(至少一个)。
- 点击底部 「执行筛选」 按钮。
- 在右侧结果区查看筛选结果,统计信息会显示「筛选后条数 / 总条数」。
示例:筛选已启用的配置项
假设你有以下 JSON 数据:
[
{ "name": "插件 A", "enabled": true, "version": "2.0" },
{ "name": "插件 B", "enabled": false, "version": "1.5" },
{ "name": "插件 C", "enabled": true, "version": "3.1" }
]操作步骤:
- 将上述 JSON 粘贴到左侧编辑区。
- 中间配置区默认已有一条条件
enabled 等于 true,无需修改。 - 点击 「执行筛选」。
- 右侧结果区将只显示两条启用的配置项(插件 A 和插件 C),统计显示
2 / 3 项。
功能详解
原始数据输入
支持两种数据格式的输入:
- JSON:标准的 JSON 数组或包含数组的 JSON 对象。
- YAML:YAML 格式的数组数据。
- 工具会自动根据内容判断格式,并在输入区右上角显示当前识别到的格式标签。
支持通过工具栏的 「粘贴」 按钮从系统剪贴板快速导入数据。
筛选规则配置
数据路径 (dataPath)
当你的数据是一个包裹在对象中的数组时(而非纯数组),需要通过「数据路径」告诉工具数组在哪里。
示例:
{
"code": 0,
"data": {
"items": [
{ "id": 1, "name": "项目A" },
{ "id": 2, "name": "项目B" }
]
}
}此时你需要在「数据路径」输入框中填写 data.items,工具会自动定位到目标数组。
提示:如果输入数据本身就是数组(以
[开头),数据路径留空即可。
筛选条件
每个筛选条件包含以下字段:
| 字段 | 说明 | 详情 |
|---|---|---|
| 启用开关 | 控制该条件是否生效 | 可临时关闭某个条件,无需删除 |
| 键名 | 要匹配的属性路径 | 支持 a.b.c 深层访问,也支持英文逗号分隔多个键名实现 OR 匹配 |
| 操作符 | 匹配规则 | 共 10 种操作符可选(见下表) |
| 目标值 | 用于匹配的值 | 等于/不等于等操作符需要填写,真值/假值/自定义脚本不需要 |
操作符说明
| 操作符 | 说明 | 示例场景 |
|---|---|---|
| 等于 | 严格相等匹配 | 筛选状态为 "active" 的项 |
| 不等于 | 严格不等匹配 | 排除状态为 "deleted" 的项 |
| 包含 | 字符串包含匹配 | 筛选名称中包含 "test" 的项 |
| 大于 | 数值大于 | 筛选价格大于 100 的项 |
| 大于等于 | 数值大于等于 | 筛选评分 >= 4.5 的项 |
| 小于 | 数值小于 | 筛选库存量小于 10 的项 |
| 小于等于 | 数值小于等于 | 筛选年龄 <= 30 的项 |
| 真值 | 值为真(存在且非假值) | 筛选已启用的开关 |
| 假值 | 值为假(不存在或为假值) | 筛选未分配的标签 |
| 自定义脚本 | 执行 JS 表达式 | 处理复杂逻辑(见高级用法) |
提示:填入目标值时会自动转换,
"true"和"false"会被识别为布尔值,纯数字字符串会自动转为数值。
条件组合逻辑
- 条件之间:多个条件为 AND 关系,数据项必须满足 所有 启用条件才算匹配。
- 单个条件内:键名支持逗号分隔,多个键名之间为 OR 关系,只要其中一个键的值满足条件即算通过。
简单来说:条件之间取交集(AND),键名之间取并集(OR)。
预设管理
如果你经常使用相同的筛选规则,可以将其保存为预设:
- 配置好筛选条件后,点击配置区顶部的 「+」 按钮。
- 输入预设名称并保存。
- 下次使用时从预设下拉列表中选择即可一键加载。
预设还支持 更新(覆盖保存当前条件)、重命名 和 删除 管理。
筛选结果
执行筛选后,右侧结果区会展示:
- 统计信息:显示
筛选后条数 / 总条数的统计。 - 筛选结果:只读的代码编辑器展示筛选后的数据,格式与输入保持一致。
- 结果操作:支持 复制结果 到剪贴板,或 发送到聊天 面板进行后续 LLM 分析。
如果没有匹配到任何项,会提示「筛选完成,没有匹配的项」。
高级用法
自定义脚本过滤
当内置操作符无法满足需求时,可以使用「自定义脚本」操作符。你需要编写一个 JavaScript 表达式,该表达式应返回 true(保留)或 false(剔除)。
脚本上下文:
item:当前遍历的数组元素。value:你在目标值输入框中填写的值。
示例 1:筛选价格在特定范围的商品
item.price > 50 && item.price < 200;示例 2:筛选名称长度超过 10 个字符的项
item.name.length > 10;示例 3:组合多字段复杂逻辑
item.enabled && (item.type === "premium" || item.priority > 3);注意:自定义脚本会在页面上通过
new Function动态执行,请不要在此处执行任何有副作用的操作。
自动状态恢复
工具会自动保存你的输入数据和筛选配置(防抖 800ms)。关闭工具后重新打开,上次编辑的内容会自动恢复,方便你继续工作。
常见问题 (FAQ)
Q1:为什么执行筛选后提示「输入数据不是数组」?
这通常有两种情况:
- 你输入的数据本身就是一个对象(如
{}),而非数组。如果数组在对象的某个字段中,请在「数据路径」中输入对应路径。 - dataPath 配置不正确,导致定位到的数据不是数组。检查你填写的路径是否正确。
Q2:如何匹配字段值包含多个关键词?
单个「包含」操作符只能匹配一个关键词。如果你需要同时匹配多个关键词(如名称同时包含 "A" 和 "B"),可以添加多个「包含」条件(条件间为 AND 逻辑),或者使用「自定义脚本」操作符编写更复杂的表达式。
Q3:条件保存为预设后会不会丢失?
预设会持久化保存在应用的配置目录中(AppData/data-filter/config.json),不会因重启应用而丢失。你也可以通过「更新预设」功能覆盖保存当前条件。
Q4:筛选结果中的数据格式为什么会变化?
工具会保持与输入格式一致:输入是 JSON 则输出 JSON,输入是 YAML 则输出 YAML。如果你发现格式不符合预期,可以检查输入数据开头的格式特征(JSON 以 { 或 [ 开头,YAML 通常以键值或列表符 - 开头)。
Q5:为什么「发送到聊天」按钮置灰不可用?
「发送到聊天」功能需要连接并配置了 LLM 服务才能使用。请先确保在应用设置中正确配置了 LLM API 地址和相关参数。
INFO
💡 使用提示:对于包含大量数据的文件(超过数千条),建议先通过 dataPath 定位到精确的目标数组,避免因嵌套层级过深导致的性能问题。