使用shell脚本来解析由restful服务返回的json

时间:2016-09-08 07:53:16

标签: bash web-services shell scripting

我有一个像“http://myhost:5000/getname”这样的网址的Restful网络服务,可以返回如下的JSON字符串: {"firstName": "john", "lastName": "doe"}

现在我需要使用Linux shell来调用Web服务并解析返回的JSON字符串以获取名字和姓氏。它们需要存储在两个变量中并打印出来。

我是shell脚本的新手,所以有人愿意分享您的想法吗?谢谢!

2 个答案:

答案 0 :(得分:2)

您可以查看jq

$ echo '{"firstName": "john", "lastName": "doe"}' | jq '.firstName, .lastName'
"john"
"doe"

答案 1 :(得分:1)

最好的办法是使用任何json识别工具。但是,这里是使用awkeval的解决方案,以后应该尽可能避免。

示例输入文件:

cat file.json
{"firstName": "john", "lastName": "doe"}

解决方案:

eval $(awk 'BEGIN{FS=RS=","} {gsub( /{|}|"/,"");split($0,a,":");print a[1] "="a[2]} ' file.json | tr -d ' ')

echo $firstName
john
echo $lastName
doe

或使用trxargs

eval $(tr '[[:punct:]]' ' ' < file.json  |tr -s ' ' |xargs -n2 |tr ' ' '=' )
echo $firstName
john
echo $lastName
doe