Skip to content

数据筛选工具

快速从 JSON / YAML 数组数据中精准提取你需要的条目。

概述

数据筛选工具提供了一套直观的图形界面,让你无需编写代码就能对结构化列表数据进行多条件过滤。无论你在处理配置文件、接口返回的列表数据,还是批量分析日志中的记录项,都可以通过设置简单的筛选条件快速定位目标数据。

核心功能:

  • 多格式输入:天然支持 JSON 和 YAML 两种数据格式,自动识别无需手动切换。
  • 丰富的操作符:提供等于、不等于、包含、数值比较、真值/假值判断以及自定义脚本共 10 种筛选操作符。
  • 多条件组合:支持添加多个筛选条件,条件间为 AND 逻辑,单个条件内的多键为 OR 逻辑。
  • 深层路径访问:通过 dataPath 参数支持访问嵌套对象中的数组(如 data.items)。
  • 预设系统:可将常用的筛选规则组合保存为预设,随时快速复用。
  • 结果一键复用:筛选结果支持一键复制到剪贴板,或直接发送到 LLM 聊天面板继续分析。

快速上手

基本流程

  1. 在左侧编辑区粘贴或输入你的 JSON / YAML 数组数据。
  2. 在中间的配置区设置筛选条件(至少一个)。
  3. 点击底部 「执行筛选」 按钮。
  4. 在右侧结果区查看筛选结果,统计信息会显示「筛选后条数 / 总条数」。

示例:筛选已启用的配置项

假设你有以下 JSON 数据:

json
[
  { "name": "插件 A", "enabled": true, "version": "2.0" },
  { "name": "插件 B", "enabled": false, "version": "1.5" },
  { "name": "插件 C", "enabled": true, "version": "3.1" }
]

操作步骤:

  1. 将上述 JSON 粘贴到左侧编辑区。
  2. 中间配置区默认已有一条条件 enabled 等于 true,无需修改。
  3. 点击 「执行筛选」
  4. 右侧结果区将只显示两条启用的配置项(插件 A 和插件 C),统计显示 2 / 3 项

功能详解

原始数据输入

支持两种数据格式的输入:

  • JSON:标准的 JSON 数组或包含数组的 JSON 对象。
  • YAML:YAML 格式的数组数据。
  • 工具会自动根据内容判断格式,并在输入区右上角显示当前识别到的格式标签。

支持通过工具栏的 「粘贴」 按钮从系统剪贴板快速导入数据。

筛选规则配置

数据路径 (dataPath)

当你的数据是一个包裹在对象中的数组时(而非纯数组),需要通过「数据路径」告诉工具数组在哪里。

示例:

json
{
  "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)

预设管理

如果你经常使用相同的筛选规则,可以将其保存为预设:

  1. 配置好筛选条件后,点击配置区顶部的 「+」 按钮。
  2. 输入预设名称并保存。
  3. 下次使用时从预设下拉列表中选择即可一键加载。

预设还支持 更新(覆盖保存当前条件)、重命名删除 管理。

筛选结果

执行筛选后,右侧结果区会展示:

  • 统计信息:显示 筛选后条数 / 总条数 的统计。
  • 筛选结果:只读的代码编辑器展示筛选后的数据,格式与输入保持一致。
  • 结果操作:支持 复制结果 到剪贴板,或 发送到聊天 面板进行后续 LLM 分析。

如果没有匹配到任何项,会提示「筛选完成,没有匹配的项」。


高级用法

自定义脚本过滤

当内置操作符无法满足需求时,可以使用「自定义脚本」操作符。你需要编写一个 JavaScript 表达式,该表达式应返回 true(保留)或 false(剔除)。

脚本上下文:

  • item:当前遍历的数组元素。
  • value:你在目标值输入框中填写的值。

示例 1:筛选价格在特定范围的商品

javascript
item.price > 50 && item.price < 200;

示例 2:筛选名称长度超过 10 个字符的项

javascript
item.name.length > 10;

示例 3:组合多字段复杂逻辑

javascript
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 定位到精确的目标数组,避免因嵌套层级过深导致的性能问题。

Released under the Apache-2.0 License.