告别 jq 噩梦!这款 JSON 神器 fx 让你在终端体验“丝滑”的数据操作

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

在程序员的日常摸鱼......哦不,日常开发中,JSON 绝对是出现频率最高的朋友。

不管是调用后端接口、查看 K8s 配置,还是分析爬虫数据,面对满屏密密麻麻、甚至没有缩进的原始 JSON 字符串,我们的第一反应通常是:

  1. 打开浏览器,搜索"JSON 在线格式化"。
  2. 把数据粘进去,点一下"美化"。
  3. 忍受网页弹窗广告,或者担心敏感数据泄露。

今天,我们要彻底终结这种痛苦。向大家安利一款在 GitHub 上狂揽 20k+ Star 的神级工具:fx

什么是 fx

fx (全称 Function X)是由开发者 antonmedv 开发的一款终端 JSON 查看器和处理器。

如果说 jq 是 JSON 界的命令行老大哥,那么 fx 就是那个懂你心思、颜值极高、且极度易用的"全能助手"。它不仅能让你像刷朋友圈一样在终端交互式地翻阅 JSON,还能让你直接用原生的 JavaScript 语法来处理数据。

为什么 fx 能脱颖而出?

  • 交互式 TUI 界面:支持鼠标滚动、折叠/展开节点,甚至有搜索功能。
  • 无依赖单文件:采用 Go 语言重写后,它就是一个二进制文件,随装随用。
  • 支持多格式 :除了 JSON,它还支持 YAMLTOML
  • 超高性能:哪怕是几百 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" ,它把简单和强大结合得恰到好处。

如果你还没试过,强烈建议你现在就安装一下,感受那种在终端"指点江山"的快感。

相关推荐
小码哥_常3 小时前
告别臃肿!Elasticsearch平替Manticore登场
后端
苍何4 小时前
万字保姆级教程:Hermes+Kimi K2.6 打造7x24h Agent军团
后端
我叫黑大帅4 小时前
为什么map查找时间复杂度是O(1)?
后端·算法·面试
FreeCultureBoy6 小时前
用 phpbrew 管理 php 环境:从安装到多版本切换
后端·php
FreeCultureBoy6 小时前
用 jenv 管理 Java 环境:从安装 JDK 到多版本切换
后端
IT_陈寒6 小时前
Vite的热更新突然失效,原来是因为这个配置
前端·人工智能·后端
考虑考虑6 小时前
SQL语句中的order by可能造成时间重复
数据库·后端·mysql
Pkmer7 小时前
古法编程: 代理模式
后端·设计模式
文心快码BaiduComate7 小时前
Comate搭载Kimi K2.6,长程13h!
前端·后端·程序员