<< ..
在shell中解析json
发布时间:问题
需要在shell里解一个JSON API,方法有很多,但是如果有复杂parse需求shell直接处理还是比较麻烦,所以看到下面的方法,非常好用。
将一段python脚本包到shell函数中,用python做解析,然后返回结果。
解决
#!/bin/bash
function jsonGet {
python -c 'import json,sys
o=json.load(sys.stdin)
k="'$1'"
if k != "":
for a in k.split("."):
if isinstance(o, dict):
o=o[a] if a in o else ""
elif isinstance(o, list):
if a == "length":
o=str(len(o))
elif a == "join":
o=",".join(o)
else:
o=o[int(a)]
else:
o=""
if isinstance(o, str) or isinstance(o, unicode):
print o
else:
print json.dumps(o)
'
}
echo $(curl -s -u "X-Requested-By: ambari" -X GET -u admin:admin http://10.8.8.61:8080/api/v1/clusters/onion_test/services/HIVE) | jsonGet ServiceInfo.state