通过jq删除对象数组中的键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过jq删除对象数组中的键相关的知识,希望对你有一定的参考价值。

如果我想在第一个输出中从JSON中删除age。有没有办法一步完成,换句话说,没有调用jq 2次?

➜ $?=0 @arastogi-ld2.linkedin.biz inGraphs/common-templates [ 1:39AM] ➤ echo '[{"id": 1, "name": "Arthur", "age": "21"},{"id": 2, "name": "Richard", "age": "32"}]' | jq .
[
  {
    "id": 1,
    "name": "Arthur",
    "age": "21"
  },
  {
    "id": 2,
    "name": "Richard",
    "age": "32"
  }
]

>>>  0s elasped...
➜ $?=0 @arastogi-ld2.linkedin.biz inGraphs/common-templates [ 1:39AM] ➤ echo '[{"id": 1, "name": "Arthur", "age": "21"},{"id": 2, "name": "Richard", "age": "32"}]' | jq '.[] | del(.age)' | jq -s
[
  {
    "id": 1,
    "name": "Arthur"
  },
  {
    "id": 2,
    "name": "Richard"
  }
]

>>>  1s elasped...
➜ $?=0 @arastogi-ld2.linkedin.biz inGraphs/common-templates [ 1:39AM] ➤
答案

使用jq调用时使用map()非常简单。

jq 'map(del(.age))' < json

map()用于给定的过滤器del(.age)将为输入数组的每个元素运行它,并以新数组的形式返回输出。

以上是关于通过jq删除对象数组中的键的主要内容,如果未能解决你的问题,请参考以下文章

基于作为数组的键值删除用户元

如何取消设置对象数组中所有对象的键?

使用 jq 保留键名展平 JSON

如何计算 JQ 中每个对象的键值对的出现次数?

通过键字符串从对象数组中删除属性

使用函数中的变量删除对象的键和值