检查响应是否有错误

时间:2018-06-01 16:47:09

标签: json bash shell response jq

我有一些Web 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")'是否出错,但只有在出现错误回复时才有效,如果它是好的&#34 ; one - jq失败。

我该怎么办?

2 个答案:

答案 0 :(得分:0)

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

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

您可以根据需要添加其他检查。

答案 1 :(得分:0)

您应该考虑只调用一次jq:

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