使用jq将对象数组转换为具有命名键的对象 [英] Using jq, convert array of objects to object with named keys

查看:148
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆