如何将动态json对象添加到JQbash
我需要根据使用bash传递的参数添加一个动态JSON对象。目前,我可以生成动态表对象,但在输出中它作为字符串追加。请帮帮我。如何将动态json对象添加到JQbash,bash,jq,Bash,Jq,我需要根据使用bash传递的参数添加一个动态JSON对象。目前,我可以生成动态表对象,但在输出中它作为字符串追加。请帮帮我。 bash demo.bashsarika@gmail.comabc演示h 我有密码: Tables=$( for i in "${@:3}"; do jq -n \ --arg tn $i \ '{"table_name":$tn}'
bash demo.bashsarika@gmail.comabc演示h
我有密码:
Tables=$( for i in "${@:3}"; do
jq -n \
--arg tn $i \
'{"table_name":$tn}'
done )
echo $Tables |jq '.'
tab=$( echo $Tables |jq '.' )
# tab= $Tables |jq '.'
JSON_STRING=$( jq -n \
--arg gb "$VALUE" \
--arg tables "$tab" \
'{"email":$gb,"tables":[($tables)]}'\
)
它给出的输出:
{
"email": "sarika@gmail.com",
"tables": [
"{\n \"table_name\": \"demo\",\n}\n{\n \"table_name\": \"h\",\n}"
]
}
我需要这样的结果:
{
"email": "sarika@gmail.com",
"tables": [
{
"table_name": "table1"
},
{
"table_name": "table2"
}
]
}
看起来你在找这个:
tables=$(for i in "${@:3}"; do jq -n --arg tn "$i" '{"table_name": $tn}'; done | jq -s .)
jq -n \
--arg gb "$VALUE" \
--argjson tables "$tables" \
'{"email": $gb, "tables": $tables}'
出了什么问题,我是如何解决的:
- 第一个循环中的
生成格式为jq
的JSON对象。要从这些对象中形成JSON数组,在对象之间使用适当的{“table_name”:$tn}
分隔符,您需要通过,
jq-s对这些对象进行管道传输。
- 要将JSON对象作为参数传递,请使用
而不是--argjson
--arg
- 要嵌入JSON数组
,请编写$tables
而不是“tables”:$tables
,这样会创建不必要的数组“tables”:[$tables]
- 这不是一个错误,但有一个非常坏的习惯,就是不使用双引号变量作为命令行参数
tables=$(for i in "${@:3}"; do jq -n --arg tn "$i" '{"table_name": $tn}'; done | jq -s .)
jq -n \
--arg gb "$VALUE" \
--argjson tables "$tables" \
'{"email": $gb, "tables": $tables}'
出了什么问题,我是如何解决的:
- 第一个循环中的
生成格式为jq
的JSON对象。要从这些对象中形成JSON数组,在对象之间使用适当的{“table_name”:$tn}
分隔符,您需要通过,
jq-s对这些对象进行管道传输。
- 要将JSON对象作为参数传递,请使用
而不是--argjson
--arg
- 要嵌入JSON数组
,请编写$tables
而不是“tables”:$tables
,这样会创建不必要的数组“tables”:[$tables]
- 这不是一个错误,但有一个非常坏的习惯,就是不使用双引号变量作为命令行参数