Json 使用jq,将对象数组转换为具有命名键的对象

Json 使用jq,将对象数组转换为具有命名键的对象,json,object,key,command-line-interface,jq,Json,Object,Key,Command Line Interface,Jq,给定一个json文件,格式如下: [ { name : "A", value : "1" }, { name : "B", value : "5" }, { name : "E", value : "8" } ] 我如何使用jq将其转换为类似的内容: { "A" : { name : "A", value : "1" }, "B" : { name : "B", value : "5" }, "E" : { name : "

给定一个json文件,格式如下:

[
 {
  name : "A",
  value : "1"
 },
 {
  name : "B",
  value : "5"
 },
 {
  name : "E",
  value : "8"
 }
]
我如何使用jq将其转换为类似的内容:

{
 "A" : {
   name : "A",
   value : "1"
 },
 "B" : {
  name : "B",
  value : "5"
 },
 "E" : {
  name : "E",
  value : "8"
 }
}
jq'{([].name):“名称”}''myfile.json'
为我获取一个具有[].name键的对象,但我如何将该对象分配给它

map( { (.name|tostring): . } ) | add
(tostring用于安全性/鲁棒性。)

索引/1 如果您的jq有
索引/1
(在1.5版发布后引入),您只需编写:

INDEX(.name)

只需通过数组中的项构建一个新对象。将项目添加到对象中,并将
名称
作为键

reduce .[] as $i ({}; .[$i.name] = $i)

你能发一些代码吗。本网站不打算为你的练习提供完整的解决方案。不过,由于他希望将结果作为一个对象,因此需要在最后添加一个
add
。谢谢,@JeffMercado。谢谢,这很有效。我还在努力适应jq的强大功能,但我发现的例子往往太简单或太复杂。对不起,也许我很笨,但你能给出一个如何使用
索引的完整例子吗?我得到:jq:error:INDEX/1没有定义在-,但我有jq 1.5“after”的意思是“after”。就其定义而言,google For:def INDEX builtin.jqreduce比INDEX更高效。。。。而且更灵活,因为您可以动态地进行转换,JS开发人员也更熟悉