json - 如何使用 jq 更新 json 文档中的单个整数?

标签 json jq

使用 jq我想更新一个 integer在来自环境变量的 JSON 文件中,但该属性被解析为字符串。

例如我想更新 task_definition.json 中的内存属性.该属性必须是整数,否则 API 会引发错误。

原始文件

{
  "containerDefinitions": [
    {
      "cpu": 128,
      "image": "...",
      "memory": 512
      ...
    }
  ]
}

jq 命令

export TASK_DEFINITION_MEMORY=256
jq '.containerDefinitions[0].memory = env.TASK_DEFINITION_MEMORY' task_definition.json > tmp.$$.json && mv tmp.$$.json task_definition.json

预期产出
{
  "containerDefinitions": [
    {
      "cpu": 128,
      "image": "...",
      "memory": 256
      ...
    }
  ]
}

实际产出
{
  "containerDefinitions": [
    {
      "cpu": 128,
      "image": "...",
      "memory": "256"
      ...
    }
  ]
}

最佳答案

尝试使用算术更新赋值运算符 //= https://stedolan.github.io/jq/manual/#Assignment

Arithmetic update-assignment: +=, -=, *=, /=, %=, //= jq has a few operators of the form a op= b, which are all equivalent to a |= . op b. So, += 1 can be used to increment values, being the same as |= . + 1.


export TASK_DEFINITION_MEMORY=256
jq '.containerDefinitions[0].memory //= env.TASK_DEFINITION_MEMORY' task_definition.json > tmp.$$.json && mv tmp.$$.json task_definition.json

关于json - 如何使用 jq 更新 json 文档中的单个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56949964/

相关文章:

.net - WCF 客户端(添加服务引用)讨厌 WebGet 和 WebInvoke ...真的,它确实如此

java - 字符串数组的问题

bash - 使用 jq 或 sed 替换 JSON 中的属性或键

javascript - 使用 eval() 在 JavaScript 中将字符串转换为 JSON 对象

json - Django 全文搜索 JSON 字段

json - 使用 jq 对 json 中的键和值进行排序

json - jq 迭代和条件

json - jq:如何将 jq 输出分配给变量?

java - 使用 JavaEE 7 中的 JSON 处理创建业务对象

jq:避免空数组映射字段