使用jq将对象数组转换为具有命名键的对象 [英] Using jq, convert array of objects to object with named keys
本文介绍了使用jq将对象数组转换为具有命名键的对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以以下格式提供json文件:
Given a json file in the format as :
[
{
name : "A",
value : "1"
},
{
name : "B",
value : "5"
},
{
name : "E",
value : "8"
}
]
我如何使用jq将其转换为类似的内容?
How would I convert it to something like this using jq:
{
"A" : {
name : "A",
value : "1"
},
"B" : {
name : "B",
value : "5"
},
"E" : {
name : "E",
value : "8"
}
}
jq '{(.[].name) : "the name"}' 'myfile.json'
使用[] .name键为我提供了一个对象,但是如何为该对象分配对象呢?
jq '{(.[].name) : "the name"}' 'myfile.json'
gets me an object with [].name keys but how do I assign the object to it?
推荐答案
map( { (.name|tostring): . } ) | add
(tostring
是出于安全性/鲁棒性.)
(The tostring
is for safety/robustness.)
如果您的jq具有INDEX/1
(在1.5版发布后引入),则可以简单地编写:
If your jq has INDEX/1
(introduced after the release of version 1.5), you can simply write:
INDEX(.name)
这篇关于使用jq将对象数组转换为具有命名键的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文