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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。