龙空技术网

linux-shell命令处理json数据

linux运维菜 1178

前言:

如今同学们对“phpjson数组转json对象”大约比较珍视,看官们都想要知道一些“phpjson数组转json对象”的相关资讯。那么小编在网上网罗了一些关于“phpjson数组转json对象””的相关文章,希望你们能喜欢,大家快快来了解一下吧!

0x00 jq介绍

jq是一个轻量级的灵活的处理json对象的命令。支持linux、windows。

0x01 二进制安装

wget -O jq

chmod +x ./jq

cp jq /usr/bin

0x02 使用yum安装

yum -y install epel-release

yum -y install jq

0x03 使用

1、格式化输出

curl 2>> /dev/null | jq

{

"code": 0,

"data": {

"ip": "8.8.8.8",

"country": "美国",

"area": "",

"region": "XX",

"city": "XX",

"county": "XX",

"isp": "Level3",

"country_id": "US",

"area_id": "",

"region_id": "xx",

"city_id": "xx",

"county_id": "xx",

"isp_id": "200053"

}

}

2、获取指定字段的数据

curl 2>> /dev/null | jq -r '.code,.data.ip,.data.country'

8.8.8.8

美国

3、提取指定的字段保存成csv文件

curl 2>> /dev/null | jq -r '[(.code|tostring),.data.ip,.data.country]|join(",")'

0,8.8.8.8,美国

注释:

.code|tostring:取code字段的值并转化为string类型

[]:数组

join(","):数组中的元素通过","连接。

4、csv转换成json字符串

cat /tmp/1.csv

0,8.8.8.8,美国

0,8.8.8.7,美国

0,8.8.2.7,美国

0,81.8.2.7,土耳其

jq -R 'split(",")|{"code":.[0],"ip":.[1],"country":.[2]}' /tmp/1.csv

{

"code": "0",

"ip": "8.8.8.8",

"country": "美国"

}

{

"code": "0",

"ip": "8.8.8.7",

"country": "美国"

}

{

"code": "0",

"ip": "8.8.2.7",

"country": "美国"

}

{

"code": "0",

"ip": "81.8.2.7",

"country": "土耳其"

}

5、 -c/--compact-output:jq 默认是pretty-prints JSON 输出,加上这个参数,一行一个json对象。

jq -R -c 'split(",")|{"code":.[0],"ip":.[1],"country":.[2]}' /tmp/1.csv

{"code":"0","ip":"8.8.8.8","country":"美国"}

{"code":"0","ip":"8.8.8.7","country":"美国"}

{"code":"0","ip":"8.8.2.7","country":"美国"}

{"code":"0","ip":"81.8.2.7","country":"土耳其"}

6、复杂json查询

complexJson='{"uid":"777","nameInfo":[{"firstName":"Jim","lastName":"Green"},{"firstName":"Lei","lastName":"Li"}]}'

echo ${complexJson} |jq

{

"uid": "777",

"nameInfo": [

{

"firstName": "Jim",

"lastName": "Green"

},

{

"firstName": "Lei",

"lastName": "Li"

}

]

}

echo ${complexJson} |jq -r '.nameInfo[].lastName'

结果:

Green

Li

注释:

.nameInfo[].lastName是获取.nameInfo[] json array中每个json object的lastName字段。

标签: #phpjson数组转json对象