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

如何使用jq对JSON中资源的monthlyCost求和并更新总费用字段

jq更新totalMonthlyCost字段解决方案

你可以直接使用以下jq命令完成需求:

jq '.breakdown |= (.totalMonthlyCost = (.resources | map(.monthlyCost) | add))' 输入文件.json

命令逻辑说明

  • .breakdown |= (...) 表示原地修改JSON中的breakdown对象,不会改动其他层级的字段内容
  • 赋值逻辑部分:先提取breakdown.resources数组中所有元素的monthlyCost数值,通过add函数求和后,直接赋值给breakdown.totalMonthlyCost字段
  • 你提供的样例执行后,totalMonthlyCost会被替换为求和结果93.6921

持久化修改到原文件的方法

如果需要直接把修改结果写入原文件,不要直接使用重定向(会清空原文件),推荐使用moreutils工具包中的sponge:

# 先安装moreutils(以Debian/Ubuntu为例)
sudo apt install moreutils
# 执行修改并写入原文件
jq '.breakdown |= (.totalMonthlyCost = (.resources | map(.monthlyCost) | add))' 输入文件.json | sponge 输入文件.json

可选:保持totalMonthlyCost为字符串类型

如果你需要和原有字段类型保持一致(原来为字符串格式),可以在求和后增加tostring转换:

jq '.breakdown |= (.totalMonthlyCost = (.resources | map(.monthlyCost) | add | tostring))' 输入文件.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:51:02