You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用jq提取JSON前两层并将子节点转为空对象?

解决方法

你可以用以下jq命令直接得到目标格式:

cat testjq.json | jq 'map_values(with_entries(.value = {}))'

命令解析

  • map_values:遍历顶层的每个键值对(也就是a1、a2对应的对象),对每个对象执行后续处理
  • with_entries:遍历当前对象的所有键值对(比如a1下的b1、b2)
  • .value = {}:把每个键对应的值替换为空对象,刚好匹配你需要的结构

如果想基于你之前获取的键数组来实现,也可以用这个写法:

cat testjq.json | jq 'map_values( . | keys | reduce .[] as $k ({}; .[$k] = {}))'

这里先通过keys提取第二层的键数组,再用reduce把数组转换成键对应空对象的结构。

内容的提问来源于stack exchange,提问作者dmay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 15:07:07