当前位置:  开发笔记 > 前端 > 正文

如何将jq中的对象序列组合成一个对象?

如何解决《如何将jq中的对象序列组合成一个对象?》经验,为你挑选了2个好方法。

我想转换对象流:

{
  "a": "green",
  "b": "white"
}
{
  "a": "red",
  "c": "purple"
}

成为一个对象:

{
  "a": "red",
  "b": "white",
  "c": "purple"
}

另外,如何将相同的序列包装到数组中?

[
    {
      "a": "green",
      "b": "white"
    },
    {
      "a": "red",
      "c": "purple"
    }
]

可悲的是,手册严重缺乏全面性,谷歌搜索也没有找到答案.



1> peak..:

如果您的输入是一个对象流,那么除非您的jq具有inputs,否则必须"slurped"对象,例如使用-s命令行选项,以便将它们组合在一起.

因此,在输入流中组合对象的一种方法是使用:

jq -s add

对于第二个问题,创建一个数组:

jq -s .

当然还有其他选择,但这些都很简单,不需要最新版本的jq.使用jq 1.5及更高版本,您可以使用"输入",例如jq -n '[inputs]'


@JenniferM.而不是留下*Thanks*评论你也可以[接受答案](http://stackoverflow.com/help/someone-answers)
好吧,我只需要发布它来弄清楚如何去做.我转过身来.[] | <表达> | 加入`.| map()| 添加`现在它做我想要的;)

2> Evgeny..:

使用-s命令行选项进行替代的替代方法是使用inputs过滤器。像这样:

jq -n '[inputs] | add'

这将产生一个包含所有输入对象的对象。

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有