还在为复杂的 jq 语法抓狂?antonmedv/fx 带着交互式 TUI 和纯正 JavaScript 语法来了!JSON 调试、过滤、转换,一个工具全搞定。

在程序员的日常摸鱼......哦不,日常开发中,JSON 绝对是出现频率最高的朋友。
不管是调用后端接口、查看 K8s 配置,还是分析爬虫数据,面对满屏密密麻麻、甚至没有缩进的原始 JSON 字符串,我们的第一反应通常是:
- 打开浏览器,搜索"JSON 在线格式化"。
- 把数据粘进去,点一下"美化"。
- 忍受网页弹窗广告,或者担心敏感数据泄露。
今天,我们要彻底终结这种痛苦。向大家安利一款在 GitHub 上狂揽 20k+ Star 的神级工具:fx。
什么是 fx
fx (全称 Function X)是由开发者 antonmedv 开发的一款终端 JSON 查看器和处理器。
如果说 jq 是 JSON 界的命令行老大哥,那么 fx 就是那个懂你心思、颜值极高、且极度易用的"全能助手"。它不仅能让你像刷朋友圈一样在终端交互式地翻阅 JSON,还能让你直接用原生的 JavaScript 语法来处理数据。
为什么 fx 能脱颖而出?
- 交互式 TUI 界面:支持鼠标滚动、折叠/展开节点,甚至有搜索功能。
- 无依赖单文件:采用 Go 语言重写后,它就是一个二进制文件,随装随用。
- 支持多格式 :除了 JSON,它还支持 YAML 和 TOML。
- 超高性能:哪怕是几百 MB 的大文件,加载依然飞快。
快速安装
fx 提供了多种安装方式,几乎涵盖了所有操作系统。
MacOS(Homebrew) / Linux
bash
brew install fx
snap install fx
通过 Go 安装
对于我们后端开发者来说,这可能是最方便的方式:
bash
go install github.com/antonmedv/fx@latest
Windows
可以使用 scoop:
bash
scoop install fx
安装完成后,在终端输入 fx --version。如果看到版本号,恭喜你,你的终端已经进化了。
核心玩法:从入门到进阶
场景一:拯救"瞎眼"的原始 JSON
当你用 curl 调接口时,返回的数据往往是一坨。
以前:
bash
curl -s https://api.github.com/repos/antonmedv/fx
# 然后盯着屏幕发呆...
现在:
bash
curl -s https://api.github.com/repos/antonmedv/fx | fx
输入这行命令后,你会进入一个交互式的 TUI 界面。
- j/k:上下移动。
- h/l:折叠/展开节点。
- / :进行模糊搜索。
- Enter:深入查看某个属性。
- q:退出。
在这个界面里,你可以用鼠标点点点,也可以用类似 Vim 的快捷键。底部还会实时显示你当前光标所在位置的 JSON Path,直接复制就能用在代码里,简直是调试利器!
场景二:像写代码一样过滤数据
很多时候,我们只需要 JSON 里的某几个字段。jq 的语法难记,但 JS 你总会吧?
假设你有一个包含 100 个用户信息的 JSON,你想找出所有年龄大于 18 岁的用户姓名。
使用 fx:
bash
cat users.json | fx '.filter(u => u.age > 18).map(u => u.name)'
没错,就是直接写 JS 的匿名函数。fx 内置了一个极简的 JS 引擎,支持所有的常用标准方法(.map(), .filter(), .reduce(), Object.keys() 等)。
场景三:链式处理与"语法糖"
fx 非常聪明,它提供了一些语法糖来简化操作。
比如你想查看 package.json 里的版本号:
bash
# 标准写法
fx package.json '.version'
# 简化写法
fx package.json .version
如果你想把多个处理逻辑串联起来,只需要把它们写在一起:
bash
# 先过滤,再排序,再取前三个
cat data.json | fx '.filter(u => u.age > 10).sort().slice(0,3)'
场景四:不仅是 JSON,还有 YAML 和 TOML
在运维或配置管理中,YAML 遍地走。fx 完美兼容 YAML。
bash
fx config.yaml
它会自动将 YAML 转换为内存中的对象进行预览和处理。如果你需要把 YAML 转成 JSON 文件,只需要一跳:fx config.yaml . > config.json。
为什么建议用 fx 替代 jq?
可能有人会问:"我已经习惯 jq 了,为什么要换?"
这里有一份简单的对比表:
| 特性 | jq | fx |
|---|---|---|
| 交互性 | 无 (纯命令行输出) | 强 (支持 TUI 交互式翻阅) |
| 可读性 | 复杂逻辑较难阅读 | 与原生代码逻辑一致 |
| 跨平台 | 需安装环境 | 纯 Go 编写,单文件运行 |
最重要的一点是:调试效率。
用 jq 时,你往往需要不断修改命令、运行、查看输出,反复多次。
用 fx 时,你先进入交互模式,找到你想要的路径,然后按一下 .(进入 Dig 模式)或者直接在交互界面实时预览处理结果。这种即时反馈的体验是无价的。
结语
在这个数据爆炸的时代,处理 JSON 的能力直接决定了你的开发幸福感。fx 并不是要彻底取代所有工具,但在交互式探索 和基于 JS 的快速数据清洗这两个领域,它绝对是目前的最优解。
正如 fx 的座右铭所说: "Terminal JSON viewer & processor" ,它把简单和强大结合得恰到好处。
如果你还没试过,强烈建议你现在就安装一下,感受那种在终端"指点江山"的快感。