Json 使用jq,将对象数组转换为具有命名键的对象
给定一个json文件,格式如下: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 : "
[
{
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开发人员也更熟悉