json - 使用 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 : "E",
  value : "8"
 }
}
jq '{(.[].name) : "the name"}' 'myfile.json'给我一个带有 [].name 键的对象,但我如何将对象分配给它?

最佳答案

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

(tostring 是为了安全/稳健。)

指数/1

如果你的 jq 有 INDEX/1 (在1.5版本发布后引入),你可以简单地写:
INDEX(.name)

关于json - 使用 jq,将对象数组转换为具有命名键的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42427725/

相关文章:

perl 检查嵌套哈希引用

javascript - Ruby on rails/Javascript 小部件

python - 如何在python中使用循环创建多个类对象?

JavaScript变量和同一个变量也是一个对象

javascript - 通过对象方法访问数组中的对象属性

python - 防止python截断用作键的数据

ruby - 在 Ruby 中更新哈希值

javascript - 从这个 google places API 地址结果中提取地址片段的最佳方法是什么?

javascript - 从 json 创建下拉列表

javascript - 以平面结构从 JSON 中获取每个名称值