1、jsonpath和json的区别
※json是一种轻量级的数据交换格式,它是的人们很容易的进行阅读和编写,适用于进行数据交互的场景
※jsonpath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种原因实现保本:JavaScript/Python/PHP和Java
2、jsonpath的应用
jsonpath与xpath的区别:

xpath索引下标是从1开始的
jsonpath索引下标是从0开始
查找book下所有的
import jsonpath
dicname={'name':'lily','age':18,'sex':['mal','femal']}
res=jsonpath.jsonpath(dicname,'$..name')
print(res) ==》['lily']
obj={'price':{'car':[{'name':'benz','speed':'fast','producer':'Genman'},{'name':'bmw',
'speed':'average','producer':'Genman'},{'name':'alfa','speed':'supers','producer':'Milan'}]}}
#####查询所有的speed
ret=jsonpath.jsonpath(obj,'$.price.car[*].speed')
rets=jsonpath.jsonpath(obj,'$..speed')
print(ret) ==》['fast', 'average', 'supers']
print(rets) ==》['fast', 'average', 'supers']
#price下的所有节点
store_point=jsonpath.jsonpath(obj,'$.price.*')
print(store_point)
切片的我没有实现,不知道怎么回事~!
查找show==rpg条件下的同级目录的value的值
import jsonpath
datas= {"data": [{"title": "呀屎了你","a": [{"value": "xxx","show": "类型"},{"value": "zzz","show": "rpg"}]
},{"title": "呀屎啦你们","a": [{"value": "ttt","show": "类型"},{"value": "ccc","show": "rpg"}]}]}
result=jsonpath.jsonpath(datas,'$..[?(@.show=="rpg").value]')
print(result)
result2=jsonpath.jsonpath(datas,expr="$.data..a[?(@.show == 'rpg').value]")
print(result2)
第二种写法效率要比第一种效率高
网友评论