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

作者:GetcharZp日期:2026/4/21

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

image.png

在程序员的日常摸鱼……哦不,日常开发中,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

1brew install fx
2snap install fx
3

通过 Go 安装

对于我们后端开发者来说,这可能是最方便的方式:

1go install github.com/antonmedv/fx@latest
2

Windows

可以使用 scoop

1scoop install fx
2

安装完成后,在终端输入 fx --version。如果看到版本号,恭喜你,你的终端已经进化了。

核心玩法:从入门到进阶

场景一:拯救“瞎眼”的原始 JSON

当你用 curl 调接口时,返回的数据往往是一坨。

以前:

1curl -s https://api.github.com/repos/antonmedv/fx
2# 然后盯着屏幕发呆...
3

现在:

1curl -s https://api.github.com/repos/antonmedv/fx | fx
2

输入这行命令后,你会进入一个交互式的 TUI 界面

  • j/k:上下移动。
  • h/l:折叠/展开节点。
  • / :进行模糊搜索。
  • Enter:深入查看某个属性。
  • q:退出。

在这个界面里,你可以用鼠标点点点,也可以用类似 Vim 的快捷键。底部还会实时显示你当前光标所在位置的 JSON Path,直接复制就能用在代码里,简直是调试利器!

场景二:像写代码一样过滤数据

很多时候,我们只需要 JSON 里的某几个字段。jq 的语法难记,但 JS 你总会吧?

假设你有一个包含 100 个用户信息的 JSON,你想找出所有年龄大于 18 岁的用户姓名。

使用 fx:

1cat users.json | fx '.filter(u => u.age > 18).map(u => u.name)'
2

没错,就是直接写 JS 的匿名函数。fx 内置了一个极简的 JS 引擎,支持所有的常用标准方法(.map(), .filter(), .reduce(), Object.keys() 等)。

场景三:链式处理与“语法糖”

fx 非常聪明,它提供了一些语法糖来简化操作。

比如你想查看 package.json 里的版本号:

1# 标准写法
2fx package.json '.version'
3
4# 简化写法
5fx package.json .version
6

如果你想把多个处理逻辑串联起来,只需要把它们写在一起:

1# 先过滤,再排序,再取前三个
2cat data.json | fx '.filter(u => u.age > 10).sort().slice(0,3)'
3

场景四:不仅是 JSON,还有 YAML 和 TOML

在运维或配置管理中,YAML 遍地走。fx 完美兼容 YAML。

1fx config.yaml
2

它会自动将 YAML 转换为内存中的对象进行预览和处理。如果你需要把 YAML 转成 JSON 文件,只需要一跳:fx config.yaml . > config.json

为什么建议用 fx 替代 jq?

可能有人会问:“我已经习惯 jq 了,为什么要换?”

这里有一份简单的对比表:

特性jqfx
交互性无 (纯命令行输出)强 (支持 TUI 交互式翻阅)
可读性复杂逻辑较难阅读与原生代码逻辑一致
跨平台需安装环境纯 Go 编写,单文件运行

最重要的一点是:调试效率

jq 时,你往往需要不断修改命令、运行、查看输出,反复多次。

fx 时,你先进入交互模式,找到你想要的路径,然后按一下 .(进入 Dig 模式)或者直接在交互界面实时预览处理结果。这种即时反馈的体验是无价的。

结语

在这个数据爆炸的时代,处理 JSON 的能力直接决定了你的开发幸福感。fx 并不是要彻底取代所有工具,但在交互式探索基于 JS 的快速数据清洗这两个领域,它绝对是目前的最优解。

正如 fx 的座右铭所说: "Terminal JSON viewer & processor" ,它把简单和强大结合得恰到好处。

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


告别 jq 噩梦!这款 JSON 神器 fx 让你在终端体验“丝滑”的数据操作》 是转载文章,点击查看原文


相关推荐


实测对比:哪款开源 Kubernetes MySQL Operator 最值得用?(2026 深度评测)
小猿姐2026/4/13

本文基于作者在 AWS EKS 上对四款 MySQL Operator 的真实部署与测试,覆盖集群搭建、高可用切换、弹性扩缩容、动态参数、TLS 等维度,适合正在评估 MySQL Kubernetes 方案的工程师参考。 一、为什么要做这次对比测试? 过去两年,越来越多的团队开始将 MySQL 从虚拟机迁移到 Kubernetes。驱动力很直接:统一的基础设施管控、更快的弹性扩容、以及 GitOps 风格的声明式运维。 但随之而来的问题是:MySQL Operator 怎么选? 我们决定不依赖


Claude Code 的权限系统是如何工作的
candyTong2026/4/5

在 agent runtime 的实现里,权限从来不是外围配置项,而是执行系统的一部分。只要模型开始改文件、跑命令、调用外部工具,系统就必须回答一个核心问题:这一步是否允许执行,以及这个判断应该在执行链路的哪个位置完成。 Claude Code 的权限系统很适合作为分析样本。它不是在工具外面额外包一层确认框,而是把权限判断直接嵌入工具调用链路,让一次工具调用从发起到落地,始终伴随一套可组合、可回写的运行时裁决。 文章从一个常见工作场景切入,分析权限系统实际解决的问题、内部层次划分,以及这些设计对


阿里云服务迁移实战(二)——网关迁移与前后端分离配置
KD2026/3/27

一、背景 由于业务原因,需要把服务器从外部阿里云账号迁移到阿里云账号 原阿里云是在服务器上部署Nginx做网关,迁移后改用阿里云CLB 同时对前后端分离逻辑做梳理,调整为更高效合理的配置 二、Nginx迁移至CLB 1.采用阿里云CLB原因 高可用性:会自动做健康检查,如果服务出现问题,会自动做流量切换 自动化管理:部署后阿里云会处理CLB的监控、更新和运维,无需手动维护 2.迁移前 迁移前Nginx部署在一台ECS服务器上 3.迁移后 迁移后单独部署负载均衡CLB 4.迁移


我让 AI 操作网页之后,开始不想点按钮了
糟糕好吃2026/3/19

每天在后台系统填表单、在电商网站筛商品、在管理后台点来点去……如果有一天,你只需要说一句话,AI 就能替你干完这些活,你会不会觉得:我的双手终于可以解放了? 说实话,我第一次看到阿里开源的 PageAgent 时,脑子里蹦出的就是上面那句话。这是一个能听懂人话、然后直接帮你操作网页的小工具——不需要写脚本,不需要装插件(甚至可以用书签),只需要一行代码,或者一句话。 它让我突然意识到:我们和网页的交互方式,可能正在迎来一次真正的变革。 一、体验下三个让你“哇塞”的场景 场景一:后台系统创建用


【OpenClaw养虾】从零开始部署安装,接入QQ机器人
卷福同学2026/3/11

从零开始的养虾记 1.OpenClaw是什么 OpenClaw最近非常的火,友友们可以在各种地方刷到它,但是还是有很多人不知道这是个什么东西,能做啥 简单总结,它真正解决了一个问题:让AI从”能聊天“变成”能干活“ 2.OpenClaw能做啥 OpenClaw是一个开源的AI Agent框架,让AI拥有了手和脚,能自动执行任务、调用浏览器、操作工具等等。 以运营自媒体账号为例,用OpenClaw搭建自动化系统,AI可完成的工作: 自动选题 自动写作 自动配图 自动发文,一键发布到公众号、小


我把大脑开源给了AI
风象南2026/3/3

前段时间遇到个很烦人的问题:随着用 AI 的频率越来越高,我发现自己每天都在做重复的“填表”工作。 代码在 GitHub,笔记在语雀,灵感在手机微信备忘录。每次开一个新的 AI 对话框,我都要不厌其烦地重新给它喂背景信息:“我是谁”、“我的项目规范是什么”、信息需要从各个系统同步到AI,效率极低。 为了解决这个问题,我干脆把这些散落的东西整合了起来,建了一个纯文本的本地知识库——我叫它 AIStudio。 一开始只是想弄个集中的仓库,方便AI找到它需要的东西,但用着用着,这套架构演变成了一个我和


LeetCode 762.二进制表示中质数个计算置位:位运算(mask O(1)判断)
Tisfy2026/2/22

【LetMeFly】762.二进制表示中质数个计算置位:位运算(mask O(1)判断) 力扣题目链接:https://leetcode.cn/problems/prime-number-of-set-bits-in-binary-representation/ 给你两个整数 left 和 right ,在闭区间 [left, right] 范围内,统计并返回 计算置位位数为质数 的整数个数。 计算置位位数 就是二进制表示中 1 的个数。 例如, 21 的二进制表示 10101 有 3


Flutter 正在计划提供 Packaged AI Assets 的支持,让你的包/插件可以更好被 AI 理解和选择
恋猫de小郭2026/2/14

如何让开源项目能够持续获得资金支持,2025 - 2026 的答案肯定是紧跟 AI 。 2025 年 Dart/Flutter MCP 和 Flutter GenUI 的出现,无疑让 Flutter 在 AI 上刷新了存在感,特别是谷歌核心项目 NotebookLM 在 Flutter 上的成功,也让 Flutter 在 AI 应用场景证明了可行性,这从第三方 appfigures 提供的数据也可以有明显体现: 数据是 appfigures 分析数百万个 iOS 和 Android 应用和游


JavaScript的数据类型 —— Boolean类型
橘朵2026/2/6

Boolean(布尔值)类型有两个字面值:true和false。 这两个布尔值不同于数值,因此 true 不等于 1,false 不等于 0。 虽然布尔值只有两个,但所有其他类型的值都有相应布尔值的等价形式,可以调用特定的Boolean() 转型函数: let message = "Hello world!"; let messageAsBoolean = Boolean(message); Boolean()转型函数可以在任意类型的数据上调用,而且始终返回一个布尔值。 下面是不同类型与布尔


中文分词与文本分析实战指南
艾光远2026/1/27

1. 引言:中文分词的重要性与挑战 中文作为一门独特的语言,其词语之间没有像英文那样的空格分隔,这使得中文文本处理面临着特殊的挑战。分词是中文自然语言处理(NLP)的基础环节,直接影响后续的文本分析、情感分析、信息检索等任务的质量。 jieba作为Python中最受欢迎的中文分词工具之一,以其高效、准确和易用性赢得了广泛认可。它不仅支持多种分词模式,还提供了丰富的扩展功能,如词性标注、关键词提取等,成为了中文NLP领域的必备工具。 2. 环境准备与基础配置 2.1. 导入必要模块 在开

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客