JSON與JsonPATH
阿新 • • 發佈:2018-12-11
JSON
JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式,它使得人們很容易的進行閱讀和編寫。同時也方便了機器進行解析和生成。適用於進行資料互動的場景,比如網站前臺與後臺之間的資料互動。
JSON和XML的比較可謂不相上下。
JSON的結構
JSON有2種結構:物件和陣列 物件: 物件:物件在js中表示為{ }括起來的內容,資料結構為 { key:value, key:value, ... }的鍵值對的結構,在面向物件的語言中,key為物件的屬性,value為對應的屬性值,所以很容易理解,取值方法為 物件.key 獲取屬性值,這個屬性值的型別可以是數字、字串、陣列、物件這幾種。 陣列: 陣列:陣列在js中是中括號[ ]括起來的內容,資料結構為 ["Python", "javascript", "C++", ...],取值方式和所有語言中一樣,使用索引獲取,欄位值的型別可以是 數字、字串、陣列、物件幾種。
JSON的方法
load開啟檔案
loads字串
dump
dumps
string串
load傳入檔案,返回值為json格式
loads傳入字串,返回值是json格式
資料來源: { "store": { "book": [ { "category": "reference", "author": "李白", "title": "Sayings of the Century", "price": 8.95 }, { "category": "fiction", "author": "杜甫", "title": "Sword of Honour", "price": 12.99 }, { "category": "fiction", "author": "白居易", "title": "Moby Dick", "isbn": "0-553-21311-3", "price": 8.99 }, { "category": "fiction", "author": "蘇軾", "title": "The Lord of the Rings", "isbn": "0-395-19395-8", "price": 22.99 } ], "bicycle": { "color": "red", "price": 19.95 } } } 案例: import json #開啟一個檔案,進行讀取,將檔案中的資料轉換成json格式 books = json.load(open('./books.txt', mode='r', encoding='utf-8')) # print(books) # print(type(books)) #<class 'dict'> ######################################################## with open('./books.txt', mode='r', encoding='utf-8') as fp: books1 = fp.read() books2 = json.loads(books1,encoding='utf-8') print(books1) #<class 'str'>,獲取資料不方便,批量獲取得使用正則 print(type(books1)) print(books2) #<class 'dict'>,獲取資料方便,如下嘗試 print(type(books2)) #獲取李白資料 bookinfo = books2['store']['book'] # print('李白資料:',bookinfo ) for book in bookinfo: print(book['author'],book['title'],book['price']) ######################################################## #傳入dict物件,寫入json檔案中,資料型別為json #注意:原資料中有中文的時候,預設是用asciic編碼的,我們需要用ensure_ascii=False,這樣編碼就變成utf-8了 json.dump(books2,open('./books.json',mode='w',encoding='utf-8'),ensure_ascii=False) #傳入str物件,寫入json檔案中資料型別還是str json.dump(books1,open('./books1.json',mode='w',encoding='utf-8')) ######################################################## #dumps方法:將物件轉換成字串 books3 = json.dumps(books2,ensure_ascii=False) print(books3) #<class 'str'> print(type(books3))
總結load、loads、dump、dumps
loads 傳入物件(str),出來是json
dumps 傳入物件(json),出來是str
以上倆個常用
load 傳入一個檔案,返回是json(把檔案中的資料轉換成json)
dump 傳入一個物件(json),一個不存在的json檔案,把物件寫入json檔案中,格式是json
傳入一個物件(str), 一個不存在的json檔案,把物件寫入json檔案中, 格式是str
JsonPath(解析方式)
JsonPath 是一種資訊抽取類庫,是從JSON文件中抽取指定資訊的工具,提供多種語言實現版本,包括:Javascript, Python, PHP 和 Java。 JsonPath 對於 JSON 來說,相當於 XPATH 對於 XML 簡單版: JsonPath解析JSON 格式 XPATH 解析 HTML/XML格式 Beautiful Soup 解析 HTML/XML格式
JsonPath與XPath語法對比