我有一个像“http://myhost:5000/getname”这样的网址的Restful网络服务,可以返回如下的JSON字符串:
{"firstName": "john", "lastName": "doe"}
现在我需要使用Linux shell来调用Web服务并解析返回的JSON字符串以获取名字和姓氏。它们需要存储在两个变量中并打印出来。
我是shell脚本的新手,所以有人愿意分享您的想法吗?谢谢!
答案 0 :(得分:2)
您可以查看jq
$ echo '{"firstName": "john", "lastName": "doe"}' | jq '.firstName, .lastName'
"john"
"doe"
答案 1 :(得分:1)
最好的办法是使用任何json识别工具。但是,这里是使用awk
和eval
的解决方案,以后应该尽可能避免。
示例输入文件:
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
或使用tr
和xargs
eval $(tr '[[:punct:]]' ' ' < file.json |tr -s ' ' |xargs -n2 |tr ' ' '=' )
echo $firstName
john
echo $lastName
doe