检查响应是否有错误
Check if response has error
我有一些网络 API,它用 JSON 响应,还有一个 shell 脚本,它用 curl 发送请求并用 jq 处理 JSON。
响应结构如下:
- 错误响应:
{ "error": "error_message" }
- 单一结构。
- 良好响应:
[ { "element1": "value1", "element2": "value2", "element3": "value3" } ]
- 3 个元素的结构数组(固定数量)。
问题是用户可能会输入一些数据导致 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
我有一些网络 API,它用 JSON 响应,还有一个 shell 脚本,它用 curl 发送请求并用 jq 处理 JSON。
响应结构如下:
- 错误响应:
{ "error": "error_message" }
- 单一结构。 - 良好响应:
[ { "element1": "value1", "element2": "value2", "element3": "value3" } ]
- 3 个元素的结构数组(固定数量)。
问题是用户可能会输入一些数据导致 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