python使用json,jsonpath.jsonpath
前言JsonPath是一个信息抽取类库,用于解析多层嵌套的json数据。它是从JSON文档中提取指定信息的工具,并提供了多种实现保本的理由:JavaScript/Python/PHP和Java。
JSON的Path相当于XML的XPath。
安装pip安装jsonpath官方文档:http://goessner.net/articles/JsonPath
使用导入jsonpath方法。
RES=jsonpath.jsonpath (dic_name, $.key _ name’)详细解释:参数DIC _ name的数据类型为python字典类型。
$.“key_name”表达式:表示获得所有带有key_name的值。其中:“$”表示最外面的{},而“.”意味着模糊匹配。
当没有数据的表达式被传入时,该函数返回一个假布尔值。
返回值的数据类型为python列表。
与XPath语法相比,Json结构清晰,可读性高,复杂度低,易于匹配。
下表对应于XPath的用法:
路径语言
JSONPath
形容
/
$
根节点
.
@
电流波节
/
.或者[]
获取子节点
.
不适用的
获取Jsonpath不支持的父节点。
//
.
不管地点,符合条件的都选。
*
*
匹配所有元素节点
@
不适用的
根据属性访问,Json不支持,因为Json是键值递归结构,不需要属性访问。
[]
[]
迭代器标记(可以在里面做简单的迭代操作,比如数组下标,按内容取值等。)
[,]
在迭代器中支持多选。
[]
?()
支持过滤操作。
不适用的
()
支持表达式求值
()
不适用的
JsonPath不支持分组
JSON表达式示例
示例1
d={
“error _ code”:0,
stu_info :
{
id: 2059,
姓名:小白,
性别:男性,
年龄:28岁,
地址,河南省济源市北海路32号,
等级:天蝎座,
电话: 18378309272 ,
金:10896,
信息:{
卡:434345432,
银行名称:中国银行
}
},
{
id: 2067,
姓名:小黑,
性别:男性,
年龄:28岁,
地址,河南省济源市北海路32号,
等级:天蝎座,
电话: 12345678915 ,
黄金:100
}
]
}
Res=d[stu_info][1][name] #获取学生姓名的原始方式:通过在字典中查找key和list方法中的下标索引。
Print(res) #输出结果是:小黑
导入jsonpath
Res 1=jsonpath.jsonpath (d, $.name) #嵌套N层也可以得到所有学生姓名信息,$表示最外层的{},意味着模糊匹配。
Print(res1) #输出结果是list: [小白,小黑]
res2=jsonpath.jsonpath(d, $.银行名称’)
Print(res2) #输出结果为列表:[中国银行]
Res=jsonpath.jsonpath (d, $.name123) #当传入一个不存在的键(name)时,返回False
Print(res3) #输出结果为:False示例2
导入jsonpath
d={
“error _ code”:0,
stu_info :
{
id: 314,
名称:矿泉水,
性别:男性,
年龄:18岁,
地址:北京市昌平区,
等级:摩羯,
电话: 18317155663 ,
金:100,
汽车:[
{car1 :宝马 },
{car2: ben-z},
]
}
]
}
Result=jsonpath.jsonpath (d, $.car2) #模糊匹配
1=jsonpath.jsonpath (d, $。stu_info) #获取stu_info中的所有内容
2=jsonpath.jsonpath (d, $。stu_info [0]) #获取stu_info中的第一个元素
3=jsonpath.jsonpath (d, $。斯图信息[0]。id) #获取stu _ info中第一个元素的id
打印(结果)
打印(结果1)
打印(结果2)
打印运行结果(结果3):
[本-z]
[{id: 314,姓名:矿泉水,性别:男,年龄:18,地址:北京市昌平区,年级:摩羯座,电话: 18317155663
[{id: 314,姓名:矿泉水,性别:男,年龄:18,地址:北京市昌平区,年级:摩羯座,电话: 18317155663
[314]期待陌生,拥抱惊喜。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。