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

如何将JSON根层级键值统一转换为字符串(求Bash兼容方案)

JSON根层级值转字符串适配方案

需求规则

  • 待处理内容为准备导入数据库的JSON转储文件,表结构等前置准备已完成
  • 转换要求:仅将JSON根层级所有键对应的值统一转换为字符串类型,根层级值内部的嵌套数组、对象、基础类型子元素完全保留原有结构,不做任何修改
  • 优先提供Bash环境可直接运行的兼容实现

转换示例

原始输入JSON

{
  "k1": 10,
  "k2": "KEY2",
  "k3": [],
  "k4": -55.6,
  "k6": { "k7": 1, "k8": [{ "k9": "true", "k10": "false" }] },
  "k11": "THIS IS VERY LONG MESSAGE OF CHARACTERS UPTO 1024 BYTES"
}

期望输出JSON

{
  "k1": "10",
  "k2": "KEY2",
  "k3": "[]",
  "k4": "-55.6",
  "k6": "{ \"k7\": 1, \"k8\": [{ \"k9\": \"true\", \"k10\": \"false\" }] }",
  "k11": "THIS IS VERY LONG MESSAGE OF CHARACTERS UPTO 1024 BYTES"
}

Bash环境实现

使用通用JSON处理工具jq实现,工具轻量、无额外依赖,转换逻辑稳定不会破坏嵌套结构,各大操作系统包管理器均提供直接安装源。

依赖安装

  • Debian/Ubuntu系:sudo apt install jq -y
  • RHEL/CentOS/Fedora系:sudo dnf install jq -y
  • macOS(Homebrew环境):brew install jq

转换命令

单文件转换

处理单个JSON文件,结果输出到新文件,不修改原文件:

jq 'with_entries(.value |= tojson)' 原始文件.json > 转换后文件.json

批量目录转换

批量处理当前目录下所有.json后缀的文件,直接覆盖原文件(执行前建议先备份原文件):

for json_file in *.json; do
  tmp_file=$(mktemp)
  jq 'with_entries(.value |= tojson)' "$json_file" > "$tmp_file" && mv "$tmp_file" "$json_file"
done

逻辑说明

  • with_entries负责遍历JSON根层级的所有键值对,不会进入嵌套结构内部
  • tojson会将当前处理的根层级值序列化为标准JSON格式字符串,自动处理特殊字符转义,完整保留嵌套内容的原始结构
  • 该逻辑可正确处理整数、浮点数、布尔值、字符串、空数组、空对象、多层嵌套结构等所有JSON合法值类型,不会出现转义错误、结构篡改问题

内容的提问来源于stack exchange,提问作者M Ahmad Mujtaba

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:31:09