首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jq将对象转换为数组

Jq将对象转换为数组
EN

Stack Overflow用户
提问于 2020-01-02 22:01:44
回答 1查看 198关注 0票数 2

我有以下文件"Pokemon.json",它是精灵精灵的精简列表,列出了它们的精灵索引ID、名称和对象类型数组。

代码语言:javascript
复制
[{
  "name": "onix",
  "id": 95,
  "types": [{
      "slot": 2,
      "type": {
        "name": "ground"
      }
    },
    {
      "slot": 1,
      "type": {
        "name": "rock"
      }
    }
  ]
}, {
  "name": "drowzee",
  "id": 96,
  "types": [{
    "slot": 1,
    "type": {
      "name": "psychic"
    }
  }]
}]

我试图实现的输出是,提取类型对象的name值并将其插入到数组中。我可以很容易地得到一个包含所有类型的数组

代码语言:javascript
复制
jq -r '.pokemon[].types[].type.name' pokemon.json

但是我遗漏了将name字段转换为它自己的数组的关键部分

代码语言:javascript
复制
[ {
  "name": "onix",
  "id": 95,
  "types": [ "rock", "ground" ]
}, {
  "name": "drowzee",
  "id": 96,
  "types": [ "psychic" ]
} ]

感谢您的帮助,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-02 22:26:14

man中,它声明您可以选择使用map -这本质上意味着遍历每个结果并返回一些内容(在我们的例子中,相同的数据,构造不同)。

这意味着您将为每一行创建新对象,并将一些值放入其中

注意,您确实需要在内部使用另一个迭代器,因为我们希望每行有一个对象。(我们现在只需要以不同的方式映射值。)

因此,解决方案可能如下所示:

代码语言:javascript
复制
 jq -r '.pokemon[]|{name:.name, id:.id, types:.types|map(.type.name)}' pokemon.json
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59564652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档