检查响应是否有错误

Check if response has error

我有一些网络 API,它用 JSON 响应,还有一个 shell 脚本,它用 curl 发送请求并用 jq 处理 JSON。

响应结构如下:

问题是用户可能会输入一些数据导致 API 响应错误。在这种情况下,我将无法处理响应,因为存在另一个结构。

我试图检查它是否是 echo ${json} | jq '. | select (.| has("error")) | has("error")' 的错误,但这只有在它是错误响应时才有效,如果它是 "good" 一个 - jq 失败。

我该怎么办?

如果您知道响应将属于特定类型(对象与数组),您可以只测试该类型。

$ <<<"$json" jq 'arrays'  # "good" response
$ <<<"$json" jq 'objects' # "bad" response

您可以根据需要添加额外的检查。

您应该考虑只调用一次 jq,如下所示:

 if type == "object" 
 then ...
 else ...
 end