Json 逐子元素查找元素并替换为子元素';s值

Json 逐子元素查找元素并替换为子元素';s值,json,jq,Json,Jq,为了清楚起见,我有一个JSON数组,它是我想要转换为不同结构的结构 [ { "a": 1, "b": 2, "c": { "d": 3 }, "e": { "f": 4, "g": { "d": 8 } } }, { "a": 5, "b": 6, "c": { "d": 7 } }, { "a": 9,

为了清楚起见,我有一个JSON数组,它是我想要转换为不同结构的结构

[
  {
    "a": 1,
    "b": 2,
    "c": {
      "d": 3
    },
    "e": {
      "f": 4,
      "g": {
        "d": 8
      }
    }
  },
  {
    "a": 5,
    "b": 6,
    "c": {
      "d": 7
    }
  },
  {
    "a": 9,
    "b": 10,
    "c": {
      "d": 11
    },
    "e": {
      "f": 12,
      "g": {
        "d": 13
      }
    }
  }
]
我想将其转换为:

[
  {
    "a": 1,
    "b": 2,
    "c": 3,
    "e": {
      "f": 4,
      "g": 8
    }
  },
  {
    "a": 5,
    "b": 6,
    "c": 7
  },
  {
    "a": 9,
    "b": 10,
    "c": 11,
    "e": {
      "f": 12,
      "g: 13
    }
  }
]
因此,每一个元素的形式:

"c": {
    "d": 3
}
我想转换为:

"c": 3
可以保证JSON在根对象中没有“d”元素

我试过了

jq  \
            'map(
                with_entries(
                    .value = if .value."$oid" ? then "ObjectId(" + .value."$oid"+ ")" else .value end
                    )
                )'

但它对内部元素不起作用。

稍作调整后,他在评论中发布的@hek2mgl链接上被接受的答案对你的情况来说就很好了

walk(if type == "object" and keys_unsorted == ["d"] then .d else . end)

检查以下内容: