前言:
如今同学们对“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对象