使用 JQ --arg 传递 NULL 参数
Pass NULL argument with JQ --arg
我想要的最终状态是这样的 JSON 文件:
{
"xxx": null
}
但是命令 jq --null-input --arg tst null '.xxx=$tst'
产生:
{
"xxx": "null"
}
和 jq --null-input --arg tst "" '.xxx=$tst'
产生:
{
"xxx": ""
}
如何传递一个变成值 null
而不是字符串 "null"
的值?
使用 --argjson
,而不是 --arg
。
$ jq --null-input --argjson tst null '.xxx=$tst'
{
"xxx": null
}
--arg
始终将分配的值视为字符串,而 --argjson
将其视为 JSON 值。
其他三种简单的可能性,最短的在前:
jq -n '{xxx: .}'
echo null | jq '{xxx: .}'
jq -n --argjson xxx null '{$xxx}'
我想要的最终状态是这样的 JSON 文件:
{
"xxx": null
}
但是命令 jq --null-input --arg tst null '.xxx=$tst'
产生:
{
"xxx": "null"
}
和 jq --null-input --arg tst "" '.xxx=$tst'
产生:
{
"xxx": ""
}
如何传递一个变成值 null
而不是字符串 "null"
的值?
使用 --argjson
,而不是 --arg
。
$ jq --null-input --argjson tst null '.xxx=$tst'
{
"xxx": null
}
--arg
始终将分配的值视为字符串,而 --argjson
将其视为 JSON 值。
其他三种简单的可能性,最短的在前:
jq -n '{xxx: .}'
echo null | jq '{xxx: .}'
jq -n --argjson xxx null '{$xxx}'