主要是使用第三方的库gojsonq,来查询JSON数据
例如这样的JSON数据
{
名称' : '计算机,
描述' : '计算机产品清单,
供应商' :{
名称' : '星际迷航,
电子邮件:'info@example.com ',
网站:'www.example.com ',
项目:[
{
id':1,
名称:'MacBook Pro 13英寸视网膜,
价格' :1350
},
{
id':2,
名称:'MacBook Pro 15英寸视网膜,
价格' :1700
},
{
id':3,
名称' : '索尼VAIO ',
价格' :1200
},
{
id':4,
名称' : '富士通,
价格' :850
},
{
id':5,
名称' : '惠普酷睿i5’,
价格' :850,
密钥' :2300
},
{
id':6,
名称' : '惠普酷睿i7 ',
价格' :950
},
{
id':null,
名称' : '惠普酷睿i3固态硬盘,
价格' :850
}
],
价格:[
2400,
2100,
1200,
400.87,
89.90,
150.10
],
姓名' :[
'悦耳的电脑Doe ',
无名氏,
汤姆,
杰瑞,
尼古拉斯,
艾比
]
}
}
安装导入gojsonq
去找github.com/thedevsaddam/gojsonq
或者
去找gopkg.in/thedevsaddam/gojsonq.v1
引入
导入github。com/depvsaddam/gojsonq '
或者
导入gopkg。in/depvsaddam/gojsonq。v1’
可以像ORM访问数据库一样,访问JSON数据
简单应用
包装主体
导入(
fmt '
日志
github。com/depvsaddam/gojsonq '
)
func main(){ 0
jq :=gojsonq .新()。文件('。/sample-data.json ')
第:号决议.查找('供应商。项目[1]).名称)
如果jq .错误()!=零
日志。致命(jq .错误())
}
fmt .Println(res)
}
输出结果
MacBook Pro 15英寸视网膜
例一
查询从供应商处选择*价格为1200或身份证明(identification)为空的项目
使用gojsonq的方式查询
func ex1(){ 0
jq :=gojsonq .新()。文件('。/sample-data.json ')
第:号决议.发件人('供应商.项目')。其中('价格','',1200)。或者这里(' id ','=',nil).Get()
fmt .Println(res)
}
输出结果
[地图[价格:1350 id:1名称:MacBook Pro 13英寸视网膜]地图[id:2名称:MacBook Pro 15英寸视网膜价格:1700]地图[id:nil名称:马力酷睿i3固态硬盘价格3:850]]
例2
查询选择名称、供应商价格。价格为1200或身份证明(identification)为空的项目
使用gojsonq的方式查询
func ex2(){ 0
jq :=gojsonq .新()。文件('。/sample-data.json ')
第:号决议.发件人('供应商.项目')。其中('价格','',1200)。或者这里(' id ','=',nil).
仅('名称','价格)
fmt .Println(res)
}
输出结果
[地图[名称:MacBook Pro 13英寸视网膜价格:1350]地图[名称:MacBook Pro 15英寸视网膜价格:1700]地图[名称:马力酷睿i3固态硬盘价格:850]]
例3
查询从供应商处选择金额(价格)。价格为1200或身份证明(identification)为空的项目
使用gojsonq的方式查询
func ex3(){ 0
jq :=gojsonq .新()。文件('。/sample-data.json ')
第:号决议.发件人('供应商.项目')。其中('价格','',1200)。或者这里(' id ','=',nil).总和("价格")
fmt .Println(res)
}
输出结果
3900
例四
查询从供应商处选择价格。价格为1200的项目
使用gojsonq的方式查询
func ex4(){ 0
jq :=gojsonq .新()。文件('。/sample-data.json ')
第:号决议.发件人('供应商.项目')。其中('价格','',1200)。采摘(价格)
fmt .Println(res)
}
输出结果
[1350 1700]
例5
查询从供应商处选择*。按价格排序的项目
使用gojsonq的方式查询
func ex5(){ 0
jq :=gojsonq .新()。文件('。/sample-data.json ')
第:号决议.发件人('供应商.项目')。SortBy('价格')。Get()
fmt .Println(res)
}
输出结果
[地图[id : nil name : HP酷睿i3固态硬盘价格:850]地图[id :4名称:富士通价格:850]地图[价格:850键:2300 id 3:5名称: HP酷睿i5]地图[id 3:6名称: HP酷睿i7价格3:950]地图[id :950
例6
处理相关的错误信息
func ex6(){ 0
jq :=gojsonq .新()。文件('。/sample-data.txt ')
err :=jq .错误()
如果出错!=零
日志。宿命论
}
}
输出结果
2018/09/27 11:20:42 gojson q : open ./sample-data.txt:系统无法找到指定的文件。
例七
如这样的JSON数据
{
用户:[
{
id':1,
名称' :{
第一个' : '悦耳的电脑,
最后' : '兰博'
}
},
{
id':2,
名称' :{
第一个' : '伊森,
最后' : '亨特'
}
},
{
id':3,
名称' :{
第一个' : '悦耳的电脑,
最后一个:'Doe '
}
}
]
}
实现这样的查询从name.first=悦耳的电脑
使用gojsonq的方式查询
func ex7(){ 0
jq :=gojsonq .新()。文件('。/data.json ')
第:号决议.发件人('用户')。WhereEqual('name.first ','悦耳的电脑').Get()
fmt .Println(res)
}
输出结果
[地图[id:1名称:地图[first:悦耳的电脑最后:兰博]]地图[id:3名称:地图[first:悦耳的电脑last:Doe]]]