返回资讯中心
外部精选
软件工程
#开发者实时流

开发者重启旧项目:为 Ruby String 加 to_proc 以简化 JSON 遍历

来源标题:Show HN: String#to_proc` to Help Traversing JSON

一位开发者重新启动多年前的项目,通过为 String 添加 to_proc,让 Ruby 可以用类似 '[data][repository][issues][edges]*([node][title])' 的字符串路径遍历深层嵌套 JSON。该方案区别于 jq 和 JSONPath,可作为 Ruby 块配合 map、find 使用,默认在 nil 处报错,并以 & 支持可选链。作者正征求反馈,考虑是否将其发布为 gem。

Hacker News 最新samleb342026/11/13 · 今天3 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

我重启了多年前在做的一个项目。我实在受够了为了取一个简单的值而嵌套使用 flat_map,把代码搞得基本没法读。我的想法是让遍历 JSON 响应这类深层嵌套结构变得简单可读,同时仍然待在 Ruby 里、保留它的灵活性。效果是这样的:

    graphql_response.then(&'[data][repository][issues][edges]*([node][title])')
    # => ["Support negative indexes", "Document aggregates"]
    github_prs_response.then(&'*[draft].any?')
    # => true

它和 jq 或 JSONPath 的区别在于:

  • 它是一个 Ruby block,所以可以用在 map、find 等方法里
  • 可以在其中调用 Ruby 方法
  • 它不会自动展平数组,由你决定
  • 默认在遇到 nil 时抛错(除非你用 &,比如 [customer][address]&[city])当然,它也有缺点:
  • 又是一套要学的新语法
  • 它 monkey-patch 了 String,对某些人来说这可能是无法接受的障碍我很想听听反馈,你们怎么看? 以这样的价值主张发布一个 gem 值得吗? 评论链接:https://news.ycombinator.com/item?id=50491929 点数:1 评论数:0

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →