有时候拖一份几百 KB 的 JSON 到编辑器里,眼睛盯着一层层嵌套,手指还得一行一行往下滑,那种心情你懂的:想找个字段,偏偏它就藏在最深的角落。之前只能傻傻地搜关键字,但结果一堆,看着也烦。
所以这次更新,我们给编辑器加了个新技能:JSONPath 搜索。
它能干啥?
简单说,JSONPath 就是给 JSON 数据准备的一种“查询语言”。有点像 XPath 之于 XML,或者 SQL 之于数据库。它的语法不复杂,学几分钟就能用。
比如:
$.store.book[0].title
,意思是“去 store 下面,把第一本书的 title 拿出来”。$..price
,两个点表示“深度扫描”,能把所有 price 字段都翻出来,不管藏在哪一层。$.store.book[?(@.price < 10)]
,这个就更像数据库的筛选了:把价格小于 10 的书挑出来。
为什么要加它?
因为在一些测试或者调接口的场景里,你面对的 JSON 动不动就是上千行。光靠肉眼找字段,效率堪比翻字典。用 JSONPath,就像在 JSON 里按地址导航,直奔目标。
再说,它现在已经被 IETF 收录为 RFC 9535 标准了,也算是“官方认可”的写法。换句话说,这不是我们拍脑袋整出来的语法,而是有规范、有社区、有参考文档的。
体验一下
在 json.itzhai.com/editor 里点开 JSONPath 搜索框,敲一行表达式,就能直接得到结果。
- 想确认接口返回的某个数组里到底有几条?用
$.data.items[*]
。 - 想抓取所有作者?用
$..author
。 - 甚至可以写条件:
$..[?(@.status=='active')]
,把所有状态是 active 的对象筛出来。
写在最后
这个功能我自己已经用上了,最大的感受就是:少了那种来回拉滚动条的窘迫。小改动,但真能省不少力气。