我正在嘗試檢測何時獲得所有空的 json 值。
以下是 2 個空 json 值的示例。
json='{
"data": [],
"pagination": {
"cursor": ""
}
}'
json='{
"data": [],
"error": "",
"message": "",
"status": ""
}'
我得到的最接近的是這個,它似乎適用于第一個例子,但不適用于第二個例子。
echo "$json" | jq -e 'all( .[] ; . == "" or . == [] or . == {} )'
一種,我認為簡單的方法是從每個密鑰對中獲取字串文本,然后檢查我是否留下了一個空字串。但我還沒有找到一種適用于分頁示例的方法。
uj5u.com熱心網友回復:
這將給你falseif all stringsand arraysare ""or []:
jq -e 'all(.. | strings, arrays; IN("", [])) | not'
演示
uj5u.com熱心網友回復:
這可能對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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/509832.html
標籤:json重击壳jq
上一篇:用正則運算式查找替換檔案內容
下一篇:如何輸出浮點結果?[復制]
