JSON的全名叫
Java
Script
Object
Notation,是由
Douglas Crockford所設計的一種資料格式,最初應用在JavaScript程式語言中,做為一種資料交換的格式,而後被廣泛運用在Web開發與
NoSQL資料庫,現今已成為一種重要的資料格式,Python與許多其它的程式語言皆有支援。
Python處理JSON格式資料時須先導入內建的json模組,接著我們就可以來看JSON的資料格式,以及在Python中是如何處理資料格式的轉換,與讀寫JSON的方式。
import json
JSON資料格式
JSON有兩種資料格式:
- 物件(object):包含在大括號 { } 中,以「鍵(key):值(value)」對的方式儲存資料,不同的鍵值對間以逗號「,」隔開。其中鍵是一個字串(string),值可以是字串、數值(number)、物件(object)、陣列(array)、布林值(true/false)、或是一個空值(null)。
- 陣列(array):包含在中括號 [ ] 中,由一系列的值(value)所組成,值與值之間以逗號「,」分隔。值可以是字串、數值(number)、物件(object)、陣列(array)、布林值(true/false)、或是一個空值(null)。
Python與JSON格式資料互換
json模組的dumps()與loads()方法可執行資料互換的功能:
- dumps():將Python資料轉換為JSON格式。
- loads():將JSON格式資料轉換為Python資料。
串列與JSON陣列互換
Python串列經過dumps()轉換成JSON陣列,在Python的資料格式為字串,再經loads()轉換回Python串列。
number_list = [2, 4, 6, 8, 10]
number_json = json.dumps(number_list)
number_list_from_json = json.loads(number_json)
print(number_json)
print(type(number_json))
print(number_list_from_json)
print(type(number_list_from_json))
執行結果:
[2, 4, 6, 8, 10]
< class 'str'>
[2, 4, 6, 8, 10]
< class 'list'>
字典與JSON物件互換
Python字典經過dumps()轉換成JSON物件,在Python的資料格式為字串,再經loads()轉換為Python字典。
password_dict = {
"Google": {
"url": "www.google.com",
"username": "user",
"password": "fj;sagjpwej;"
}
}
password_json = json.dumps(password_dict)
password_list_from_json = json.loads(password_json)
print(password_json)
print(type(password_json))
print(password_list_from_json)
print(type(password_list_from_json))
執行結果:
{"Google": {"url": "www.google.com", "username": "user", "password": "fj;sagjpwej;"}}
< class 'str'>
{'Google': {'url': 'www.google.com', 'username': 'user', 'password': 'fj;sagjpwej;'}}
< class 'dict'>
JSON檔案處理
json模組的dump()與load()方法可對JSON檔案進行讀寫:
- dump():將Python資料轉換為JSON檔案,資料將轉換為JSON格式。
- load():從JSON檔案中讀取資料,資料將轉換為Python格式。
Python資料轉為JSON檔案
沿用上方使用過的字典,這次我們直接將字典轉成JSON的檔案格式,副檔名是 .json。和開啟文字文件的方式一樣,需要先以open()方法開啟或創建JSON檔案,再使用dump()方法將資料寫入,其中dump()帶入的第一個參數是要儲存的Python資料,第二個參數是要存入的檔案物件。
password_dict = {
"Google": {
"url": "www.google.com",
"username": "user",
"password": "fj;sagjpwej;"
}
}
with open("password.json", "w") as password_file:
json.dump(password_dict, password_file)
執行後,PyCharm的Project欄位會出現剛寫入的檔案password.json,內容即是我們所儲存的字典資料。
若要使JSON檔案的內容更容易閱讀,可在使用dump()方法時增加indent參數,適當設定縮排的字元長度。
json.dump(password_dict, password_file, indent=4)
從JSON檔案讀取資料
在寫入了JSON檔案的資料後,即可用load()方法將檔案內容讀取出來。和寫入時相同,首先先以open()方法開啟JSON檔案,屬性設為讀取,接著使用load()方法取出資料,在此例中JSON資料將會轉換為字典格式。
with open("password.json", "r") as password_file:
password_dict_from_json_file = json.load(password_file)
print(password_dict_from_json_file)
print(type(password_dict_from_json_file))
執行結果:
{'Google': {'url': 'www.google.com', 'username': 'user', 'password': 'fj;sagjpwej;'}}
< class 'dict'>
總結
這篇文章介紹了JSON資料的基本格式,以及Python格式資料與JSON資料的互換,並且可以讀寫JSON檔案。在下篇文章中,我們將實際應用JSON格式,改寫
密碼產生器的儲存方式,並進一步增加密碼搜尋的功能,讓密碼產生器的功能更加完備。
程式範例