我试图检测何时获得所有空的json值。
这里有两个空json值的例子。
json='{
"data": [],
"pagination": {
"cursor": ""
}
}'
json='{
"data": [],
"error": "",
"message": "",
"status": ""
}'
我得到的最接近的是这个,它似乎适用于第一个例子,但不适用于第二个。
echo "$json" | jq -e 'all( .[] ; . == "" or . == [] or . == {} )'
我想一个简单的方法是,从每个键对中获取字符串文本,然后检查是否剩下一个空字符串。但是我还没有找到在分页示例中有效的方法。
如果所有strings
和arrays
都是""
或[]
:,这将为您提供false
jq -e 'all(.. | strings, arrays; IN("", [])) | not'
演示
这可能是gron 的一个很好的用途
json='{
"data": [],
"pagination": {
"cursor": "",
"position":[2,3]
}
}'
gron将输入的JSON转换为离散路径:
$ gron <<< "$json"
json = {};
json.data = [];
json.pagination = {};
json.pagination.cursor = "";
json.pagination.position = [];
json.pagination.position[0] = 2;
json.pagination.position[1] = 3;
并测试任何非空元件
$ gron <<< "$json" | grep -Evq '({}|[]|"");$' && echo "not everything is empty"
not everything is empty