一个 Common Lisp 的 jq 替代品

  • 发布时间为 2025 年 3 月 6 日。
  • 作者严重不喜欢jq的复杂且难以记忆的临时领域特定语言(DSL),认为它本应是一个在知名脚本语言(如 Python)中用eval封装的库。
  • 作者不是唯一抱怨的人,但jq占据了心智份额,在各种包仓库中容易找到(有时甚至已预装),网上也有很多复制粘贴的内容。它因缺乏竞争、有足够灵活性处理大多数任务但需付出痛苦和努力以及现在的惯性而获胜。
  • 作者决定像[VapourSynth]一样,用自己熟悉和喜爱的语言 CL 来替代jq
  • 目前cljqhttps://git.sr.ht/~q3cpma/cl-...)只是一个非常基础的管道,能将 JSON(从命令行参数或标准输入)解析为变量$eval任意 CL 形式并将结果序列化为标准输出(使用[jzon])。
  • 受[JSONPath]启发的查询操作符?是一个改进,给出了一些 JSONPath 与?的对应表,如$.store.book[*].author对应(? $ "store" "book" * "author")等。
  • README 中有 TODO 部分,可了解后续计划。
  • 询问是否有人用自制工具对抗烦人的 DSL,并欢迎发送文章链接。
阅读 12
0 条评论