我有一些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失败。
我该怎么办?
答案 0 :(得分:0)
如果您知道响应将是特定类型(对象与数组),则可以测试该类型。
$ <<<"$json" jq 'arrays' # "good" response
$ <<<"$json" jq 'objects' # "bad" response
您可以根据需要添加其他检查。
答案 1 :(得分:0)
您应该考虑只调用一次jq:
if type == "object"
then ...
else ...
end