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

如何使用jq工具合并两个本地化JSON文件并按语言重构嵌套结构

Shell脚本中使用jq合并本地化JSON文件方案

前置准备

将两份语言文件分别保存到当前脚本运行目录:

  • 日语文件命名为ja.json,内容为:
{
    "link_generate": "ランダム化する",
    "label_apple": "リンゴ"
}
  • 英语文件命名为en.json,内容为:
{
    "link_generate": "Randomise",
    "label_apple": "Apple"
}

合并命令

直接在shell中执行以下jq命令即可生成目标结构的合并文件:

jq -n \
  --slurpfile ja ja.json \
  --slurpfile en en.json '
  $ja[0] as $jaObj | $en[0] as $enObj |
  reduce (($jaObj + $enObj) | keys_unsorted[]) as $key (
    {};
    .[$key] = {
      en: $enObj[$key],
      ja: $jaObj[$key]
    }
  )
' > merged.json

参数说明

  • -n:启用空输入模式,从零构造输出的JSON结构,不依赖标准输入内容
  • --slurpfile:将指定JSON文件的内容读取为绑定变量,读取结果为数组格式,取索引0的元素就是文件对应的根JSON对象
  • 核心逻辑:取两份语言文件所有键的并集做遍历,为每个键生成嵌套的语言层级对象,分别从对应语言文件中取值填充

输出结果

执行完成后,merged.json的内容完全符合预期结构:

{
  "link_generate": {
    "en": "Randomise",
    "ja": "ランダム化する"
  },
  "label_apple": {
    "en": "Apple",
    "ja": "リンゴ"
  }
}

扩展提示

如果后续需要新增其他语言,只需要追加对应--slurpfile参数读取新的语言文件,在键的构造块中新增对应语言代码的赋值即可,不需要修改核心遍历逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 21:39:05