
外部精选
软件工程
#开发者实时流开发者重启旧项目:为 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 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。