一篇長文帶你在python裡玩轉Json資料
Json簡介
Json(JavaScript Object Notation)
很多網站都會用到Json格式來進行資料的傳輸和交換,就像上篇我提到的網易雲音樂介面,它們返回的資料都是Json格式的。
這因為Json是一種輕量級的資料交換格式,具有資料格式簡單,讀寫方便易懂等很多優點。用它來進行前後端的資料傳輸,大大的簡化了伺服器和客戶端的開發工作量。
而且相對於XML來說,更加的輕量級,更方便解析。
今天我們講講如何在python裡玩轉Json資料?
在Json中,遵循“key-value”的這樣一種方式。
比如最簡單的這種:“{"name" : "zhuxiao5"}”,跟python 裡的字典似的,也是一個Json格式的資料。
複雜一點的比如這種(後文會多次使用到這個例子):
以上圖為例,再多說幾句Json格式的特點
- 物件透過鍵值對錶現;
- 鍵透過雙引號包裹,後面跟冒號“:”,然後跟該鍵的值;
- 值可以是字串、數字、陣列等資料型別;
- 物件與物件之間用逗號隔開;
- “{}”用來表達物件;
- “[]”用來表達陣列;
Python中的Json模組
Python中也自帶了Json模組,其中json.dumps()、json.loads()較為常用。
json.dumps() 是將 python 物件轉化為 json。
json.loads() 是將 json 轉化為 python 物件。
執行結果:
在例子中一開始的變數 dict_data 是一個字典,json.dumps() 後,將dict格式資料轉換成json格式字串。這時候雖然都是{'a': 1, 'b': 2},但是格式卻前後不一樣。隨後又透過 json.loads(),重新將json格式字串轉換成字典。
線上解析Json
在實際應用中,要提取json資料,就要了解返回json資料的結構。
可是Json格式的資料往往是這樣的。
大家別擔心,我們可以將資料複製到一些json外掛或線上解析!
比如這個外掛是小五常用的:
此時再開啟剛才的網址
是不是清晰了很多呢?
如果用python來獲取裡面的資料怎麼做的?
先利用 json.loads() 來將 Json 轉成字典,再用 get() 函式直到得到我們想要的list 物件,那麼對於 list 裡面的資料我們用個 for 迴圈就行啦~
額,有點繞。
還是文章一開始的例子,我們想獲取其中所有狗狗的名字:
我們可以這樣做:
執行結果:
這樣確實可以獲得我們想要的結果。
PS:類似的線上解析網站也有很多,比如 。
JsonPath
不知道大家還記不記得,在一開始介紹Json時,我提到了它相對於XML來說,更加的輕量級,更方便解析。
既然 XML 人家都有 XPATH ,那麼Json有沒有類似的工具呢?
JsonPath 是一種資訊抽取類庫,是從Json文件中抽取指定資訊的工具。
JsonPath 對於 Json 來說,相當於 XPATH 對於 XML。
Json結構清晰,可讀性高,複雜度低,非常容易匹配,下表是JsonPath的用法。
沒錯,還是這個例子,我們這次嘗試用JsonPath獲取其中所有狗狗的名字:
我們可以這樣做:
其中 $..name 代表從根節點開始,匹配name節點
執行結果:
利用 JsonPath 同樣可以獲得我們想要的結果。
我們在後續例項演練中將繼續採用 JsonPath 來抽取資料。
例項演練
示例:我們利用
網易雲音樂評論API來生成Json資料,並從中獲取熱評資料。
在瀏覽器(已安裝Json解析外掛)中開啟:
標紅區域的資料是我們本次想要獲取的。
執行結果:
成功獲取√
希望本文能讓大家以後玩轉Json資料更輕鬆~
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923331/viewspace-2662961/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一篇文章帶你玩轉正規表示式
- 行為驅動開發:一篇文章帶你用 Python 玩轉 BDDPython
- 一篇文章帶你使用 JSON 格式資料完成 SpringSecurity 登入JSONSpringGse
- 新霸哥帶你輕鬆玩轉Oracle資料庫Oracle資料庫
- 大資料帶你玩轉Facebook和Youtube網紅營銷大資料
- 帶你重新“玩轉”FlutterFlutter
- 萬字長文帶你漫遊資料結構世界資料結構
- 資料建模實戰,Smartbi帶你玩轉購物籃分析
- star帶你玩轉postgre資料庫_1_postgre安裝資料庫
- 【長文】帶你搞明白RedisRedis
- CryptAssist-帶你玩轉幣圈
- 將json資料轉換為Python字典將json資料轉換為Python字典JSONPython
- 手摸手帶你玩轉Xcode ExtensionsXCode
- 手把手帶你玩轉LinuxLinux
- 開源 5 款超好用的資料庫 GUI 帶你玩轉 MongoDB、Redis、SQL 資料庫資料庫GUIMongoDBRedisSQL
- 淘寶雙十一之外,實在RPA帶你玩轉私域流量!
- 老司機帶你玩轉Radare2
- 架構師帶你玩轉分散式鎖架構分散式
- 純乾貨:21天帶你玩轉容器
- EasyNLP帶你玩轉CLIP圖文檢索
- 帶你玩轉RabbitMQ的五種佇列MQ佇列
- 五萬字長文帶你學會SpringSpring
- Map 轉json資料,json資料轉換為MapJSON
- 長文:一篇"完美"的資料庫產品文件都有啥資料庫
- 三步帶你玩轉前端裝飾器前端
- 帶你玩轉css3的3D!CSSS33D
- 萬字長文,帶你輕鬆學習 SparkSpark
- GitHub標星3W+,80個Python案例,帶你輕鬆玩轉Python學習!GithubPython
- 帶你7天玩轉視覺化建站平臺視覺化
- 【12月11日】真香現場,帶你玩轉 EKS!
- 程式設計師大殺器?帶你玩轉ChatGPT程式設計師ChatGPT
- 【HMS Core】一張圖片帶你玩轉機器學習服務機器學習
- 帶你玩轉七牛雲端儲存——高階篇
- 帶你玩轉 JavaScript ES6 (六) – Map 對映JavaScript
- 七天帶你玩轉MySQL之SQL語句MySql
- 🎩 JSON Wizard for Mac - 解析你的 JSON 資料!🔮JSONMac
- RSA 2020還在擔心運營?綠盟ADBOS帶你玩轉SOC
- Python JSON 使用指南:解析和轉換資料PythonJSON