我一直在使用 API 调用以 JSON 格式构建它,以便稍后将其推送到数据库中。然后代码如下所示:
getPage() {
curl --fail -X GET 'https://api.app.com/v1/test?page=1&pageSize=1000&sort=desc' \
-H 'Authorization: Bearer 123abc456pickupsticks789' \
-H 'cache-control: no-cache'
}
getPage \
| jq -c '.items | .[] | {landing_id: .landing_id, submitted_at: .submitted_at, answers: .answers, email: .hidden.email}' \
> testpush.json
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,它会产生此错误: jq: error (at <stdin>:0): Cannot iterate over null (null)
我已经查看了诸如this之类的解决方案,或者this site中的这个解决方案,以及这个响应。
常见的解决方案似乎是?在前面使用 a[]并且我在朝jq底部的行中尝试了它,但它仍然不起作用。它只生成一个空的 json 文件。
我是否误读了其他答案的内容,而不是将我的答案放在?正确的位置?>
我一直试图使用这个答案从我的JSON输出中删除新的行和回车指示符.
我也试过根据我在Stack Overflow上看到的另一个答案来运行它,但它似乎仍然没有工作:
sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g' text.json > text_clean.json
Run Code Online (Sandbox Code Playgroud)
我当前的.sh脚本如下所示:
getPage() {
curl --fail -X GET 'https://api.test.com/v1/marx?page=1&pageSize=1000&sort=desc' \
-H 'Authorization: Bearer xxxxxxx' \
-H 'cache-control: no-cache'
}
getPage \
| jq -c '.data[]' \
> text.json
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
如果它有帮助,包含它的字符串的示例在输出中采用许多不同的形式,但这是一个很好的形式:
Ok! Thank you so much.\r\nBest,\r\nClaire\r\n\r\n