python中jsonpath模块运⽤
原⽂链接:
1. jsonpath介绍
⽤来解析多层嵌套的json数据;JsonPath 是⼀种信息抽取类库,是从JSON⽂档中抽取指定信息的⼯具,提供多种语⾔实现版本,包括:Javascript, Python, PHP 和 Java。
使⽤⽅法如:
import jsonpath
res=jsonpath.jsonpath(dic_name,'$..key_name')
#嵌套n层也能取到所有key_name信息,其中:“$”表⽰最外层的{},“..”表⽰模糊匹配,当传⼊不存在的key_name时,程序会返回false
2. JsonPath 对于 JSON 来说,相当于 XPath 对于 XML。
安装⽅法:pip install jsonpath
官⽅⽂档:goessner/articles/JsonPath
3. JsonPath与XPath语法对⽐:
Json结构清晰,可读性⾼,复杂度低,⾮常容易匹配,下表中对应了XPath的⽤法。
Xpath JSONPath描述
/$跟节点
.@现⾏节点
/. or []取⼦节点
..n/a就是不管位置,选择所有符合条件的条件
**匹配所有元素节点
[][]迭代器标⽰(可以在⾥⾯做简单的迭代操作,如数组下标,根据内容选值等)
|[,]⽀持迭代器中做多选
[]?()⽀持过滤操作
n/a()⽀持表达式计算
()n/a分组,JsonPath不⽀持
4. 使⽤实例
d={
"error_code": 0,
"stu_info": [
{
"id": 2059,
"name": "⼩⽩",
"sex": "男",
"age": 28,
"addr": "河南省济源市北海⼤道32号",
"grade": "天蝎座",
"phone": "183********",
"gold": 10896,
"info":{
"card":434345432,
"bank_name":'中国银⾏'
}
},
{
"id": 2067,
"name": "⼩⿊",
"sex": "男",
"age": 28,
"addr": "河南省济源市北海⼤道32号",
"grade": "天蝎座",
"phone": "12345678915",
"gold": 100
}
]
}
xpath语法 pythonres= d["stu_info"][1]['name'] #取某个学⽣姓名的原始⽅法:通过查字典中的key以及list⽅法中的下标索引
print(res) #输出结果是:⼩⿊
import jsonpath
res1=jsonpath.jsonpath(d,'$..name') #嵌套n层也能取到所有学⽣姓名信息,$表⽰最外层的{},..表⽰模糊匹配
print(res1) #输出结果是list:['⼩⽩', '⼩⿊']
res2= jsonpath.jsonpath(d,'$..bank_name')
print(res2) #输出结果是list:['中国银⾏']
res3=jsonpath.jsonpath(d,'$..name123') #当传⼊不存在的key(name)时,返回False print(res3) #输出结果是:False

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。