如何从文件中获取 json 数组,使用 jq 格式化并使用来自 json 的 ddata 卷曲一个 post 请求
How to get json array from file, format with jq and curl a post request with ddata from json
我正在尝试从 json 文件中获取数组。
{
"Requests": [
{
"Item1": "2020-01-27 16:24:49",
"Item2": "203i1Kj2gTEQgfdsfds23",
"Item3": 1603,
"Item4": "generic"
},
{
"Item1": "2020-01-27 16:24:49",
"Item2": "203i1Kj2gTEQgfdsfds23",
"Item3": 1603,
"Item4": "generic"
},
{
"Item1": "2020-01-27 16:24:49",
"Item2": "203i1Kj2gTEQgfdsfds23",
"Item3": 1603,
"Item4": "generic"
},
{
"Item1": "2020-01-27 16:24:49",
"Item2": "203i1Kj2gTEQgfdsfds23",
"Item3": 1603,
"Item4": "generic"
}
]
}
然后我想将这些项目中的每一个传递给 curl 请求,并可能与 xargs
并行处理
我仍然在将一项提交到 curl 端点时遇到困难。
cat CurlArgsFile.json | jq -c '.[][0]' | xargs -I % curl -d % -H "Content-Type: application/json" -X POST http://localhost:53391/mySVCS/writeData
我是 运行 这个 Git Bash Windows 10. 当我尝试将 json 输出回显到文件中时,我得到下面没有引号,现在我不确定我发送的是否正确 json。
{Item1:2020-01-27 16:24:49,Item2:203i1Kj2gTEQgfdsfds23,Item3:1603,Item4:generic}
如何将 json 中的第一项发送到端点并且端点识别它?
这是最终结果。问题是我不熟悉 jq 实用程序,我的 json 一直出错。
cat CurlArgsFile.json | jq -r '.Requests[]|tojson' | xargs -0 -I % curl -d % -H "Content-Type: application/json" -X POST http://localhost:53391/mySVC/writeData
如果您使用 GNU xargs
,-d
标志很有用:
jq '.Requests[]' -rc file.json |
xargs -d '\n' -0 -P0 -I@ curl -X POST -H 'Content-Type: application/json' -d @ http://localhost:53391/mySVC/writeData
否则,使用 tr
使其与其他 xargs
兼容,例如 BAD 或 BusyBox。
jq '.Requests[]' -rc file.json |
tr '\n' '[=11=]' |
xargs -0 -P0 -I@ curl -X POST -H 'Content-Type: application/json' -d @ http://localhost:53391/mySVC/writeData
我正在尝试从 json 文件中获取数组。
{
"Requests": [
{
"Item1": "2020-01-27 16:24:49",
"Item2": "203i1Kj2gTEQgfdsfds23",
"Item3": 1603,
"Item4": "generic"
},
{
"Item1": "2020-01-27 16:24:49",
"Item2": "203i1Kj2gTEQgfdsfds23",
"Item3": 1603,
"Item4": "generic"
},
{
"Item1": "2020-01-27 16:24:49",
"Item2": "203i1Kj2gTEQgfdsfds23",
"Item3": 1603,
"Item4": "generic"
},
{
"Item1": "2020-01-27 16:24:49",
"Item2": "203i1Kj2gTEQgfdsfds23",
"Item3": 1603,
"Item4": "generic"
}
]
}
然后我想将这些项目中的每一个传递给 curl 请求,并可能与 xargs
并行处理我仍然在将一项提交到 curl 端点时遇到困难。
cat CurlArgsFile.json | jq -c '.[][0]' | xargs -I % curl -d % -H "Content-Type: application/json" -X POST http://localhost:53391/mySVCS/writeData
我是 运行 这个 Git Bash Windows 10. 当我尝试将 json 输出回显到文件中时,我得到下面没有引号,现在我不确定我发送的是否正确 json。
{Item1:2020-01-27 16:24:49,Item2:203i1Kj2gTEQgfdsfds23,Item3:1603,Item4:generic}
如何将 json 中的第一项发送到端点并且端点识别它?
这是最终结果。问题是我不熟悉 jq 实用程序,我的 json 一直出错。
cat CurlArgsFile.json | jq -r '.Requests[]|tojson' | xargs -0 -I % curl -d % -H "Content-Type: application/json" -X POST http://localhost:53391/mySVC/writeData
如果您使用 GNU xargs
,-d
标志很有用:
jq '.Requests[]' -rc file.json |
xargs -d '\n' -0 -P0 -I@ curl -X POST -H 'Content-Type: application/json' -d @ http://localhost:53391/mySVC/writeData
否则,使用 tr
使其与其他 xargs
兼容,例如 BAD 或 BusyBox。
jq '.Requests[]' -rc file.json |
tr '\n' '[=11=]' |
xargs -0 -P0 -I@ curl -X POST -H 'Content-Type: application/json' -d @ http://localhost:53391/mySVC/writeData