我有一个 json 文件n用户。我需要为每个用户用不同的 UUID 替换 id 字段。之后,我需要制作ncurl 调用 json 作为有效负载。我该如何实现?
我的 json 文件:
[{
"id": "a3d920e",
"name": "Alice",
"age": 17
},{
"id": "18db903",
"name": "Bob",
"age": 71
},{
"id": "ff9a32c",
"name": "Carol",
"age": 30
}]
我尝试了这个命令:
jq -c '.[] | objects' mydata.json | jq -c --arg a "$(uuidgen)" '.id = $a'
使用该命令,我可以替换 id 字段,但我需要为每个用户提供唯一的 UUID,而该命令为所有用户提供了相同的 UUID。之后,我需要运行curl -X POST http://localhost:8080
n以每个 json 对象作为有效负载(对于这个示例文件,Alice 一次,Bob 一次,Carol 一次)。
我尝试使用 xargs 来实现这一点,但不知道如何将它与 jq 一起运行。
答案1
由于每个对象都是一行,因此您可以read
循环读取对象:
jq -c '.[] | objects' mydata.json | while read obj ; do
jq -c --arg id "$(uuidgen)" '.id = $id' <<< "$obj" \
| curl -X POST -d @- http://localhost:8080
done
告诉-d @-
curl 从标准输入读取有效负载。