【问题标题】:How to parse json objects not array using jq如何使用jq解析json对象而不是数组
【发布时间】:2022-01-03 14:25:51
【问题描述】:

例如:

echo '{"p":2}{"q":3}' | jq '.'

如何选择第一个对象?我想要下面的对象:

{"p":2}

【问题讨论】:

  • @Inian - 它作为 JSON 流是有效的,我认为可以合理地假设这是 OP 的意图。
  • @peak:我不确定 OP 的期望。他们是想得到{},还是只是一个占位符,在里面包含一些有意义的输入
  • @inian - 没有区别。 {} 是一个有效的 JSON 对象。

标签: json stream jq


【解决方案1】:

您可以使用 -n 命令行选项,例如:

jq -n input

jq -n 'first(inputs)'

【讨论】:

  • echo '{"p":2}{"q":3}' | jq -n 'first(inputs)' 有效。谢谢。
  • 如果有五个对象,我想要第三个,我会怎么做?
  • 获取第 n 个对象(从 0 开始):echo '{"p":2}{"q":3}{"r":4}{"s":5}{"t":6}' | jq -n 'nth(2;inputs)' -> {"r":4}
  • echo '{"p":2}{"q":3}{"r":4}{"s":5}{"t":6}' | jq --slurp '.[2]' 也可以!
  • Re "jq --slurp '.[2]' 也可以使用",是的,jq --slurp '...'jq -n '[ inputs ] | ...' 一样,这些不如使用first 和@987654331 @ 因为他们需要一次将整个流加载到内存中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
相关资源
最近更新 更多