一篇長文帶你在python裡玩轉Json資料

千鋒Python唐小強發表於2019-11-06
一篇長文帶你在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 物件。

一篇長文帶你在Python裡玩轉Json資料


執行結果:


在例子中一開始的變數 dict_data 是一個字典,json.dumps() 後,將dict格式資料轉換成json格式字串。這時候雖然都是{'a': 1, 'b': 2},但是格式卻前後不一樣。隨後又透過 json.loads(),重新將json格式字串轉換成字典。


線上解析Json

在實際應用中,要提取json資料,就要了解返回json資料的結構。
可是Json格式的資料往往是這樣的。

一篇長文帶你在Python裡玩轉Json資料

大家別擔心,我們可以將資料複製到一些json外掛或線上解析!


比如這個外掛是小五常用的:

一篇長文帶你在Python裡玩轉Json資料

此時再開啟剛才的網址

一篇長文帶你在Python裡玩轉Json資料

是不是清晰了很多呢?

如果用python來獲取裡面的資料怎麼做的?

先利用 json.loads() 來將 Json 轉成字典,再用 get() 函式直到得到我們想要的list 物件,那麼對於 list 裡面的資料我們用個 for 迴圈就行啦~

額,有點繞。


還是文章一開始的例子,我們想獲取其中所有狗狗的名字:


我們可以這樣做:

執行結果:


這樣確實可以獲得我們想要的結果。

PS:類似的線上解析網站也有很多,比如 。

JsonPath

不知道大家還記不記得,在一開始介紹Json時,我提到了它相對於XML來說,更加的輕量級,更方便解析。

既然 XML 人家都有 XPATH ,那麼Json有沒有類似的工具呢?

JsonPath 是一種資訊抽取類庫,是從Json文件中抽取指定資訊的工具。

JsonPath 對於 Json 來說,相當於 XPATH 對於 XML。

Json結構清晰,可讀性高,複雜度低,非常容易匹配,下表是JsonPath的用法。

一篇長文帶你在Python裡玩轉Json資料

沒錯,還是這個例子,我們這次嘗試用JsonPath獲取其中所有狗狗的名字:

我們可以這樣做:

其中 $..name 代表從根節點開始,匹配name節點

執行結果:

利用 JsonPath 同樣可以獲得我們想要的結果。

我們在後續例項演練中將繼續採用 JsonPath 來抽取資料。

例項演練

示例:我們利用 網易雲音樂評論API來生成Json資料,並從中獲取熱評資料。

在瀏覽器(已安裝Json解析外掛)中開啟:

一篇長文帶你在Python裡玩轉Json資料

一篇長文帶你在Python裡玩轉Json資料

標紅區域的資料是我們本次想要獲取的。

執行結果:

一篇長文帶你在Python裡玩轉Json資料

成功獲取√

希望本文能讓大家以後玩轉Json資料更輕鬆~


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923331/viewspace-2662961/,如需轉載,請註明出處,否則將追究法律責任。

相關文章