如何将 JSON 作为字符串插入另一个 JSON

How to insert JSON as string into another JSON

我正在编写脚本(bash 用于 Azure 管道的脚本),我需要合并来自不同变量的 JSON。例如,我有:

TYPE='car'
COLOR='blue'
ADDITIONAL_PARAMS='{"something": "big", "etc":"small"}'

因此,如您所见,我有几个字符串变量,其中一个包含 JSON.

我需要将这些变量与这种格式结合起来(我不能 :( ):

some_script --extr-vars --extra_vars '{"var_type": "'$TYPE'", "var_color": "'$COLOR'", "var_additional_data": "'$ADDITIONAL_PARAMS'"}'

但是这个组合不起作用,我有一个类似这样的字符串:

some_script --extr-vars --extra_vars '{"var_type": "car", "var_color": "blue", "var_additional_data": " {"something": "big", "etc":"small"} "}'

不正确且无效 JSON。

如何将现有的 JSON(已经用双引号格式化)与其他变量结合起来?我正在使用 bash / console / yq utilite(将 yaml 转换为 json )

使用jq生成JSON。 (您可能可以使用 yq 一步完成此操作,但我不太熟悉该工具。)

ev=$(jq --arg t "$TYPE" \ 
        --arg c "$COLOR" \
        --argjson ap "$ADDITIONAL_PARAMS" \
        -n '{var_type: $t, var_color: $c var_additional_data: $ap}')

some_script --extr-vars --extra_vars "$ev"