python-jsonpath

2019-11-27  本文已影响0人  小二哥很二
1、jsonpath和json的区别

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

2、jsonpath的应用

jsonpath与xpath的区别:


image.png

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)

第二种写法效率要比第一种效率高
上一篇 下一篇

猜你喜欢

热点阅读