json - 使用 jq 将递归下降结果收集到单个数组中

标签 json jq collect recursive-descent

是否可以收集recursive-descent使用 jq 将结果放入一个数组中?

flatten 会有帮助吗?在我看来是这样,但我就是无法让它工作。看看我现在在https://jqplay.org/s/6bxD-Wq0QE有多远,任何人都可以让它工作吗?

顺便说一句,

  • .data.search.edges[].node | {name, topics: ..|.topics?} 有效,但我希望来自同一节点的所有主题都在一个数组中,而不是在所有不同的返回结果中具有相同的 name .
  • flatten 单独会给我 Cannot iterate over null, and
  • 这就是我尝试使用 map(select(.? != null)) 过滤掉 null 的原因。但是,对于我的 map-select,我也会得到 Cannot iterate over null

那么现在一切都归结为如何过滤掉那些 null 了?

更新:,通过“收集到一个数组中”我想得到这样的东西:

[
  {
    "name": "leumi-leumicard-bank-data-scraper",
    "topics": ["banking", "leumi", "api", "puppeteer", "scraper", "open-api"]
  }
]

而不是在所有不同的返回结果中重复相同的 name。因此递归下降在我看来是一种选择,但只要我能得到如上所示的结果,我对任何解决方案都持开放态度。那可能吗?谢谢。

最佳答案

收集非假值的一种方法:

.data.search.edges[].node 
| {name, topics: [.. | .topics? | select(.)]}

结果是:

{
  "name": "leumi-leumicard-bank-data-scraper",
  "topics": [
    "banking",
    "leumi",
    "api",
    "puppeteer",
    "scraper",
    "open-api"
  ]
}
{
  "name": "echarts-scrappeteer",
  "topics": []
}

关于json - 使用 jq 将递归下降结果收集到单个数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49410611/

相关文章:

json - 如何在 jq 中为 CSV 导出添加标题?

Java collect with lambda expression 示例

python - 了解 JSONEncoder 的子类化

java - json中的双引号简单

javascript - 奇怪的Put Json表单数据(Jquery Ajax)

java - 将 Set<V> 转换为 Map<String, Set<String>

android - Android Studio 中的警告 : Can be replaced with collect call

javascript - 为什么通过索引访问我的对象会给我未定义的结果?

json - JQ 删除多个属性

json - JQ首场比赛后停赛