Python json解析库jsonpath原理及使用示例
jsonpath
jsonpath用于多层嵌套json格式的解析。
pipinstalljsonpath
| JsonPath | 描述 |
|---|---|
| $ | 根节点 |
| @ | 现行节点 |
| .or[] | 取子节点 |
| n/a | 取父节点,jsonpath为支持 |
| .. | 就是不管位置,选择所有复合条件的条件 |
| * | 匹配所有元素节点 |
| n/a | 根据属性访问,json不支持,因为json是个key-value递归结构,不需要数属性访问 |
| [] | 迭代器标示(可以在里边做简单的迭代操作,如数组下标,根据内容选值等) |
| [,] | 支持迭代器中做多选 |
| ?() | 支持过滤操作 |
| () | 支持表达式计算 |
| n/a | 分组,JsonPath不支持 |
jsonpath使用示例
book_dict={
"store":{
"book":[
{"category":"reference",
"author":"NigelRees",
"title":"SayingsoftheCentury",
"price":8.95
},
{"category":"fiction",
"author":"EvelynWaugh",
"title":"SwordofHonour",
"price":12.99
},
{"category":"fiction",
"author":"HermanMelville",
"title":"MobyDick",
"isbn":"0-553-21311-3",
"price":8.99
},
{"category":"fiction",
"author":"J.R.R.Tolkien",
"title":"TheLordoftheRings",
"isbn":"0-395-19395-8",
"price":22.99
}
],
"bicycle":{
"color":"red",
"price":19.95
}
}
}
| JsonPath | Result |
|---|---|
| $.store.book[*].author | store中的所有的book作者 |
| $…author | 所有的作者 |
| $.store.* | store下的所有元素 |
| $.store…price | store中的所有价钱 |
| $…book[2] | 第三本书 |
| $…book[(@.length-1)] | 最后一本书 |
| $…book[0,1] | 取前两本书 |
| $…book[?(@.isbn)] | 获取有jsbn的所有数 |
| $…book[?(@.price<10)] | 获取价格大于10 |
| $…* | 匹配所有数据 |
使用示例
$是查找的根节点,传参数是python的dict类型,当查找到的时候返回一个list结果,查找失败的时候返回False.
importjsonpath
result={
"code":0,
"data":[
{
"age":20,
"create_time":"2019-09-15",
"id":1,
"mail":"283340479@qq.com",
"name":"yoyo",
"sex":"M"
},
{
"age":21,
"create_time":"2019-09-16",
"id":2,
"mail":"123445@qq.com",
"name":"yoyo111",
"sex":"M"
}
],
"msg":"success!"
}
msg=jsonpath.jsonpath(result,'$.msg')
print(msg)#输出结果['success!']
names=jsonpath.jsonpath(result,'$..name')
print(names)#输出结果['yoyo','yoyo111']
no=jsonpath.jsonpath(result,'$..yoyo')
print(no)#找不到是结果是False
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。