如何从文件中获取 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