Python-jsonpath使用和json转换
生活随笔
收集整理的這篇文章主要介紹了
Python-jsonpath使用和json转换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(一)JSONPath-JSON的XPath
- JSONPath表達式始終以與XPath表達式與XML文檔結合使用的相同方式引用JSON結構。由于JSON結構通常是匿名的,并且不一定具有“根成員對象”,因此JSONPath假定$分配給外部對象的抽象名稱。[摘自官方文檔]
- JSONPath表達式可以使用點號-表示法:$.store.book[0].title
- 括號符號:$[‘store’][‘book’][0][‘title’]
- JSONPath允許通配符 *表示成員名稱和數組索引
部分語法(夠用)
| $ | 根元素 |
| @ | 當前對象元素 |
| . | 子元素 |
| … | 遞歸下降(所有元素) |
| * | 通配符 |
安裝jsonpath庫
pip install jsonpath準備json數據
json_data = {"code": 0,"message": "0","ttl": 1,"data": {"isLogin": True,"email_verified": 0,"face": "http://i1.hdslb.com/bfs/face/17061e541785832b44426c51429ddfee39.jpg","level_info": {"current_level": 0,"current_min": 0,"current_exp": 0,"next_exp": 1},"mid": 377206,"mobile_verified": 1,"money": 0,"moral": 70,"official": {"role": 0,"title": "","desc": "","type": -1},"officialVerify": {"type": -1,"desc": ""},"pendant": {"pid": 0,"name": "","image": "","expire": 0},"scores": 0,"uname": "灑脫嘍","vipDueDate": 0,"vipStatus": 0,"vipType": 0,"vip_pay_type": 0,"vip_theme_type": 0,"wallet": {"mid": 377206,"bcoin_balance": 0,"coupon_balance": 0,"coupon_due_time": 0},"has_shop": False,"shop_url": "","allowance_count": 0,"answer_status": 1} }導包
import jsonpath使用
1、獲取data節點下的所有數據
普通取值方式
datas = json_data["data"] for data in datas.items():print(data)使用jsonpath取值
# 返回的是一個數組 datas = jsonpath.jsonpath(json_data, "$.data") for data in datas[0].items():print(data)2、獲取json數據中的uname
# 普通取值需要先看json數據,找到uname節點,如果沒有就會報錯 data1 = json_data["data"]["uname"] print(data1) # jsonpath取值不需要看json數據,直接通過..(..就表示全局檢索后面跟的屬性)全局搜索uname屬性,如果沒有返回FALSE data2 = jsonpath.jsonpath(json_data, "$..uname") print(data2)
3、獲取json數據中所有的mid(使用普通的取值只能一個一個獲取)
(二)json轉換
- **不能使用dict將json字符串轉換為字典
- **不能使用eval將json字符串轉換為字典,json中的null在python中無法識別,會當成變量處理
- loads():將json字符串轉換為python類型的,或自動將null轉換為None
- dumps():將python類型的數據轉換為json字符串,會自動將None轉換為null
json庫是Python3自帶的庫,直接導入使用
import json準備一個字典和一個json字符串#
data = {"name": "ming", "id": 18, "msg": None} json_data = '{"name":"Tom","id":19,"msg":null}'使用loads()將json字符串轉換為python類型的,或自動將null轉換為None#
res = json.loads(json_data) print(res, type(res))
使用dumps()將python類型的數據轉換為json字符串,會自動將None轉換為null#
總結
以上是生活随笔為你收集整理的Python-jsonpath使用和json转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python-list中的append(
- 下一篇: Python 梯度下降法