检测空的json值

  • 本文关键字:json json bash shell jq
  • 更新时间 :
  • 英文 :


我试图检测何时获得所有空的json值。

这里有两个空json值的例子。

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

我得到的最接近的是这个,它似乎适用于第一个例子,但不适用于第二个。

echo "$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

相关内容

  • 没有找到相关文章

最新更新