使用 jq 从多维 JSON 数组中选择第 n 个元素

Posted

技术标签:

【中文标题】使用 jq 从多维 JSON 数组中选择第 n 个元素【英文标题】:Select nth element from multidimensional JSON array with jq 【发布时间】:2013-09-21 04:31:37 【问题描述】:

如何使用jq 来转换这个数组数组:

[
  [
    "sequence",
    "int"
  ],
  [
    "time",
    "string"
  ],
  ...
]

放入包含每个子数组的第一个 (0) 元素的数组?意思是产生这样的输出:

[
    "sequence",
    "time",
    ...
]

我正在考虑使用reduce xx as $item (...),但我没有想出任何有用的东西。

【问题讨论】:

jq 是一个 C 程序。为什么要标记为 jquery? 你指的是 jq 的 jQuery 吗? 我试图标记为 jq,但现在我看到如果你这样做,所以将标记更改为 jquery...你实际上不能标记 jq @Dreen - 供将来参考,因为 jq is defined as a synonym for jquery 在 Stack Overflow 的标签系统中,当您提交问题时它会发生变化。我无权撤消此操作(@SomeoneReadingThisWhoDoesHaveThisPrivilege - 我认为可以这样做,因为从未使用过 jq 同义词)我已用全新的 jq-json-processor 标签为您解决了问题。 干杯@MathijsFlietstra 【参考方案1】:

你可以这样使用map过滤器:

jq 'map(.[0])'

【讨论】:

现在,如何对结果应用字符串插值?【参考方案2】:

另一个选项是jq '[.[][0]]'

这与使用 map(.[0]) 的结果相同

【讨论】:

【参考方案3】:

这是一个使用 reduce

的解决方案
reduce .[] as $k ( null; . + [$k[0]] )

【讨论】:

以上是关于使用 jq 从多维 JSON 数组中选择第 n 个元素的主要内容,如果未能解决你的问题,请参考以下文章

获取 jq json 解析中的第一个(或第 n 个)元素

JQ将数据从1个文件推送到另一个文件的嵌套数组中

使用JQ从JSON中选择特定的,任意嵌套的对象

Ajax以JSON访问从PHP返回的多维数组

从两个多维数组中选择常用数组 - PHP

Java编程题多维数组的使用