小编Bal*_*lok的帖子

JQ转换为数字,从shell变量生成新的json时转换为boolean

我正在尝试生成 json 输出,其中输入来自 shell 变量。

happystring="Bob Ross"
unhappynumber1="1942"
unhappyboolean=true

JSON=$(jq -n \
        --arg happystring "$happystring" --arg unhappynumber1 "$unhappynumber1" \
        --arg unhappyboolean $unhappyboolean \
        '
        {
            happystring: $happystring,
            unhappynumber1: $unhappynumber1,
            unhappyboolean: $unhappyboolean
        }
        ')

echo "$JSON" | jq
Run Code Online (Sandbox Code Playgroud)

产生这个输出:

{
  "happystring": "Bob Ross",
  "unhappynumber1": "1942",
  "unhappyboolean": "true"
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以用tonumber一个简单的过滤器将字符串转换为数字。但是,我无法弄清楚如何将字符串转换为布尔值。而且我在从 shell vars 采购和创建新的 json 作为输出时无法推理如何做。

期望的输出:

{
  "happystring": "Bob Ross",
  "unhappynumber1": 1942,
  "unhappyboolean": true
}
Run Code Online (Sandbox Code Playgroud)

如果我在一个步骤中生成 json 并将其存储在 shell var 中,然后在第二个步骤中执行额外的转换,会更容易或更清楚吗?

json jq

4
推荐指数
2
解决办法
3074
查看次数

标签 统计

jq ×1

json ×1