一尘不染

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

json

给定一个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) : "the name"}' 'myfile.json' 使用[]
.name键为我提供了一个对象,但是如何为该对象分配对象呢?


阅读 396

收藏
2020-07-27

共1个答案

一尘不染

map( { (.name|tostring): . } ) | add

(这tostring是出于安全性/鲁棒性。)

索引/ 1

如果您的jq INDEX/1(在1.5版发布后引入),则可以简单地编写:

INDEX(.name)
2020-07-27