簡體   English   中英

檢測空的 json 值

[英]Detect empty json values

我試圖檢測何時獲得所有空的 json 值。

以下是 2 個空 json 值的示例。

json='{
  "data": [],
  "pagination": {
    "cursor": ""
  }
}'

json='{
    "data": [],
    "error": "",
    "message": "",
    "status": ""
}'

我得到的最接近的是這個,它似乎適用於第一個例子,但不適用於第二個例子。

echo "$channel_json" | jq -e 'all( .[] ; . == "" or . == [] or . == {}  )'

一種,我認為簡單的方法是從每個密鑰對中獲取字符串文本,然后檢查我是否留下了一個空字符串。 但我還沒有找到一種適用於分頁示例的方法。

如果所有stringsarrays都是""[] ,這會給你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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM