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

如何将嵌套JSON打平为下划线拼接键名的单层键值对结构?

嵌套JSON打平解决方案

你需要的无数组嵌套JSON转单层键值对的功能,直接用你提到的jq工具就能实现,无需额外安装其他工具,具体操作如下:

jq实现方案

运行如下命令即可直接输出符合要求的单层JSON:

jq '
# 自定义递归打平函数
def flatten_nested:
  . as $input
  # 遍历所有叶子节点的路径
  | reduce paths(scalars) as $path ({};
      # 拼接路径为新键,赋值对应叶子值
      . + { ($path | join("_")): $input | getpath($path) }
    );
# 调用函数处理输入
flatten_nested
' 输入的嵌套JSON文件路径

说明

  • 该命令会自动递归遍历所有非对象的叶子节点,自动拼接各级键名,完全匹配你要求的key_subkey_subsubkey: value格式
  • 如果需要更换拼接符,只需把join("_")中的下划线替换为其他合法JSON键名字符即可
  • 处理你提供的示例输入时,输出结果和你给出的预期格式完全匹配(你给出的预期输出中2级节点的文字笔误可忽略,命令输出的取值完全正确)

替代Python实现方案

如果本地有Python3环境,也可以用如下单行命令实现相同效果:

python3 -c '
import json, sys
def flatten(d, parent_key="", sep="_"):
    res = {}
    for k, v in d.items():
        new_k = f"{parent_key}{sep}{k}" if parent_key else k
        if isinstance(v, dict):
            res.update(flatten(v, new_k, sep))
        else:
            res[new_k] = v
    return res
print(json.dumps(flatten(json.load(sys.stdin)), indent=4, ensure_ascii=False))
' < 输入的嵌套JSON文件路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:36:04