我有一个这样的输入行:1374240, 1374241
。我需要制作json文件:
{
"version": "1.0",
"tests": [
{
"id": 1374240,
"selector": ""
},
{
"id": 1374241,
"selector": ""
}
]
}
我制作了关联数组:
idRow='1374240, 1374241'
IFS=',' read -r -a array <<<"$idRow"
trimmedArray=()
for id in "${array[@]}"; do
trimmedId="$(echo -e "${id}" | xargs)"
testRow="{"id":${trimmedId},"selector":""}"
trimmedArray+=("$testRow")
done
echo "${trimmedArray[*]}"
输出:
{"id":1374240,"selector":""} {"id":1374241,"selector":""}
如何将其插入最终的json结构中并编写文件?我尝试了jq的不同变体,但我最终无法获得结构。请帮帮我。
使用-R
将数字作为原始文本读取,在,
处拆分,使用tonumbers
将其转换为数字,并动态创建结构:
echo "1374240, 1374241" | jq -R '
{version:"1.0",tests:(
split(",") | map(
{id: tonumber, selector: ""}
)
)}
'
演示
如果您可以从一开始就省略逗号,那么读取数字就更容易了,因为它们本身就是JSON:
echo "1374240 1374241" | jq -s '
{version:"1.0",tests: map(
{id: tonumber, selector: ""}
)}
'
演示
输出:
{
"version": "1.0",
"tests": [
{
"id": 1374240,
"selector": ""
},
{
"id": 1374241,
"selector": ""
}
]
}