如何检查json文件是否具有特定元素?

时间:2019-01-14 19:45:34

标签: python-3.x bash

如何检查BASH脚本的json文件中是否存在[“ foo”] [“ bar”]?在下面尝试过:

$ cat myJson.json | if ( python3 -c "import sys,json; json.load(sys.stdin)['foo']['bar']"); then echo "found foo-bar"; fi
$ found foo-bar

它可以工作,但是如果该元素不存在,它将在下面打印:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
KeyError: 'baz'

但是bash脚本不会失败。

更新

尝试过以下尝试:

cat myJson.json | \
if (
python3 -c "
import sys,json
try:
   json.load(sys.stdin)['foo']['bar']
except KeyError:
   #exit with non-0.
   sys.exit(1)
") then echo "found foo_bar"; FOUND_FOO_BAR=true;
fi
echo $FOUND_FOO_BAR
$ found foo_bar
$ 
$

我希望在“找到foo_bar”之后打印“ true”,但是没有,我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您可以使用jq工具:

jq 'map(has("foo.bar"))' myJson.json && echo "found foo-bar"