Hacker News 中文摘要

RSS订阅

展示 HN:JSON 查询 -- Show HN: JSON Query

文章摘要

这篇文章介绍了一种小型、灵活且可扩展的JSON查询语言,主要包含函数、运算符、管道和对象四种查询方式。函数通过链式调用处理数据,运算符支持基本运算和优先级控制,管道可串联多个查询,对象则用于数据转换或并行查询。

文章总结

标题:一种小巧灵活、可扩展的JSON查询语言

主要内容概述:

  1. 函数定义
  • 格式:函数名(参数1, 参数2,...)
  • 特点:函数以链式方式执行,如filter、sort等函数会依次应用于输入数据
  • 示例:sort(.address.city, "asc")filter(.age >= 21) | sort(.age, "asc")
  1. 运算符
  • 支持所有基本运算符
  • 运算符必须包含左右操作数
  • 可用括号改变默认优先级
  • 示例:.age >= 18filter(.age >= 18 and .age <= 65)
  1. 管道操作
  • 格式:查询1 | 查询2 | ...
  • 特点:按顺序执行查询,前一个查询的输出作为下一个查询的输入
  • 示例:filter(.age >= 18) | sort(.name)
  1. 对象操作
  • 格式:{属性1:查询1, 属性2:查询2,...}
  • 用途:用于数据转换或并行执行多个查询管道
  • 示例:包含names和numberOfNames属性的对象
  1. 数组操作
  • 格式:[查询1, 查询2,...]
  • 示例:filter(.city in ["New York", "Atlanta"])
  1. 属性访问
  • 格式:.属性1.属性2
  • 特点:可访问嵌套属性
  • 示例:.age.address.cityget("address", "city")
  1. 值类型
  • 支持JSON标准的基本数据类型:字符串、数字、布尔值和null
  • 示例:包含各种数据类型的展示

(注:已去除与核心查询语言特性无关的内容,如URL、发布时间等元信息,保留所有关键语法说明和示例)

评论总结

以下是评论内容的总结:

  1. 与其他工具的比较

    • 多位用户提到与jq、JSONata、JSONPath等工具的比较
    • 关键引用:
      "Doesn't the command-line utility jq already define a protocol for this?" (tcdent)
      "I'd like to know how it compares to https://jsonata.org" (jawns)
  2. jq的认可

    • 认为jq功能强大且广泛使用
    • 关键引用:
      "jq is amazing (not only for querying json)" (ivanjermakov)
      "Just use jq. None of the other ones are as flexible or widespread" (arccy)
  3. 对现有工具的不满

    • 认为JSON查询语言过多且缺乏统一标准
    • 关键引用:
      "There are a ridiculous number of JSON query/path languages." (lenkite)
      "I hate jq as much as the next guy but it’s ubiquitous" (roxolotl)
  4. 替代方案建议

    • 推荐使用JavaScript、SQL或其他语言
    • 关键引用:
      "Why not just use JavaScript syntax?" (hyperhello)
      "If you’re quite familiar with SQL for querying, I would look at duckdb." (hk1337)
  5. 对新工具的建议

    • 希望新工具能提供更好的语法或结构化表示
    • 关键引用:
      "This seems better as in you have a string format and a concrete JSON format." (eknkc)
      "I've been working on an ultra-token-efficient LLM-friendly query language." (memelang)
  6. 幽默与调侃

    • 对工具名称的调侃
    • 关键引用:
      "Maybe 'jQuery' or something along those lines :P" (cweagans)

总结:评论中普遍认可jq的强大功能,但也指出其学习曲线较陡。同时,用户对现有工具的碎片化表示不满,并提出了多种替代方案,包括JavaScript、SQL等。部分用户希望新工具能提供更友好的语法或结构化表示。