不間斷 Python 挑戰 Day 34 - JSON

閱讀時間約 8 分鐘
JSON的全名叫JavaScript 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)。
物件的資料結構,來源:json.org
值的種類,來源:json.org
  • 陣列(array):包含在中括號 [ ] 中,由一系列的值(value)所組成,值與值之間以逗號「,」分隔。值可以是字串、數值(number)、物件(object)、陣列(array)、布林值(true/false)、或是一個空值(null)。
陣列的資料結構,來源:json.org

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,內容即是我們所儲存的字典資料。
生成password.json檔案
password.json檔案內容
若要使JSON檔案的內容更容易閱讀,可在使用dump()方法時增加indent參數,適當設定縮排的字元長度。
json.dump(password_dict, password_file, indent=4)
縮排後的password.json檔案內容

從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格式,改寫密碼產生器的儲存方式,並進一步增加密碼搜尋的功能,讓密碼產生器的功能更加完備。

程式範例

為什麼會看到廣告
avatar-img
47會員
36內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Wei-Jie Weng的沙龍 的其他內容
不管你是程式的新手或老手,不管你是不是第一天寫Python程式,在編譯或執行時絕對有出現程式錯誤或異常的時候,也就是俗稱的「bug」,這對於程式編譯人員是好事,你可以在程式撰寫階段就事先排除這些異常,或是加上捕捉異常的程式區段以及處理程序,讓程式即使出現異常也可以繼續執行。
在先前的文章中,我們曾經實做過文字介面版本的密碼產生器,這篇文章中,我們將添加新的功能,包括記錄密碼使用場域的名稱、網址、帳號等,並能夠將以上記錄存檔,當然最重要的是將它轉換成友善的圖形介面。
繼上一篇文章介紹了多種tkinter的視窗元件後,這篇我們再來討論三種視窗元件的配置方法以及優缺點,以適當移動各個元件到視窗中指定的位置,讓整個視窗版面的配置看起來更合理且美觀。
之前的文章中介紹過了Turtle Graphics,它是架構於tkinter模組之上以實現基本圖形介面的繪圖模組,這篇文章就來說明tkinter模組常用元件(widget)的基本用法,以及如何用它來設計出一個具有圖形使用者介面(Graphical User Interface, GUI)的程式。
在上一篇的文章中,我們提到關於開啟CSV文件的方式,從單純的當作純文字文件開啟,到引入Python內建的csv模組對CSV類型的檔案做基本的讀寫操作,在這篇文章中,我們將再進一步使用Pandas這套強大的工具,來簡化CSV文件處理的流程。
CSV全名為Comma-Separated Values,中文稱為逗號分隔值,也可稱為字元分隔值,因為分隔字元也可以不是逗號。它以純文字的形式儲存表格資料,同一列的資料以逗號或其它符號分隔成不同欄位,每一列的資料間以換行符號分隔。網路上很多資料的格式都是以CSV檔案呈現,例如交通部中央氣象局的觀測資
不管你是程式的新手或老手,不管你是不是第一天寫Python程式,在編譯或執行時絕對有出現程式錯誤或異常的時候,也就是俗稱的「bug」,這對於程式編譯人員是好事,你可以在程式撰寫階段就事先排除這些異常,或是加上捕捉異常的程式區段以及處理程序,讓程式即使出現異常也可以繼續執行。
在先前的文章中,我們曾經實做過文字介面版本的密碼產生器,這篇文章中,我們將添加新的功能,包括記錄密碼使用場域的名稱、網址、帳號等,並能夠將以上記錄存檔,當然最重要的是將它轉換成友善的圖形介面。
繼上一篇文章介紹了多種tkinter的視窗元件後,這篇我們再來討論三種視窗元件的配置方法以及優缺點,以適當移動各個元件到視窗中指定的位置,讓整個視窗版面的配置看起來更合理且美觀。
之前的文章中介紹過了Turtle Graphics,它是架構於tkinter模組之上以實現基本圖形介面的繪圖模組,這篇文章就來說明tkinter模組常用元件(widget)的基本用法,以及如何用它來設計出一個具有圖形使用者介面(Graphical User Interface, GUI)的程式。
在上一篇的文章中,我們提到關於開啟CSV文件的方式,從單純的當作純文字文件開啟,到引入Python內建的csv模組對CSV類型的檔案做基本的讀寫操作,在這篇文章中,我們將再進一步使用Pandas這套強大的工具,來簡化CSV文件處理的流程。
CSV全名為Comma-Separated Values,中文稱為逗號分隔值,也可稱為字元分隔值,因為分隔字元也可以不是逗號。它以純文字的形式儲存表格資料,同一列的資料以逗號或其它符號分隔成不同欄位,每一列的資料間以換行符號分隔。網路上很多資料的格式都是以CSV檔案呈現,例如交通部中央氣象局的觀測資
你可能也想看
Google News 追蹤
Thumbnail
Array可以說是各種語言除了基本型別之外,最常用的資料型別與容器之一了。 Array 這種連續格子狀的資料結構,在Python要怎麼表達呢? 建立一個空的陣列 最簡單也最直接的寫法就是 array = [] # Python list [] 就對應到大家熟知的array 陣列型態的資料結
解讀JSON 字串 首先,你需要使用 Python 的 json 模組來解讀JSON 字串。 JSON的基本結構: 由花括號 {} 包圍,內部是鍵值對的集合,每個鍵值對之間用逗號分隔。 鍵是字串類型,值可以是任何JSON支持的資料類型(字串、數字、布林值、陣列、物件或 null)。 {
Thumbnail
這些章節的目的是為了介紹JavaScript中的各種數據類型,包括基礎類型和物件類型,以及如何將數據從一種類型轉換為另一種類型。此外,還介紹了如何創建自定義類型,以及如何使用JavaScript中的陣列、集合和字典。
Thumbnail
本文詳細介紹了Python中的各種資料型別,包括整數、字串、清單、元組、集合和字典,並提供了相關的操作範例。此外,還解釋了如何在Python中定義和操作變數,包括如何同時對多個變數進行賦值。
Thumbnail
JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。 JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。 JSON由兩種結構組成:物件(Object)和陣列(Array)。
※ 常用Object(物件)型態的方法: 拿到object裡面某個key的value(值): 拿到所有屬性: ※ 存取物件屬性:點記法與括號記法 使用點記法 (dot notation) 或括號記法 (bracket notation) 來存取物件的值,以下兩種寫法的結果是一樣的: //
Thumbnail
JS 資料型別分為兩大類,原始型別 (Primitive values) 和物件型別 (Objects)。
Thumbnail
f字符串(f-string)在Python 3.6版本引入了新特性,可以更方便地格式化字符串。本文介紹了f-string的基本使用方法,以及表達式、運算符、格式化控制、字典和列表的應用,以及調用方法和函數等。f-string提供了一種更靈活的方式,使你能夠控制字符串的外觀,以滿足不同情況下的需求。
Thumbnail
JSON 格式因為其輕巧、易於讀寫的特性,所以普遍應用於數據儲存。本文將介紹如何使用 Python 來讀取、處理、解析和修改 JSON 檔案。
Thumbnail
Array可以說是各種語言除了基本型別之外,最常用的資料型別與容器之一了。 Array 這種連續格子狀的資料結構,在Python要怎麼表達呢? 建立一個空的陣列 最簡單也最直接的寫法就是 array = [] # Python list [] 就對應到大家熟知的array 陣列型態的資料結
解讀JSON 字串 首先,你需要使用 Python 的 json 模組來解讀JSON 字串。 JSON的基本結構: 由花括號 {} 包圍,內部是鍵值對的集合,每個鍵值對之間用逗號分隔。 鍵是字串類型,值可以是任何JSON支持的資料類型(字串、數字、布林值、陣列、物件或 null)。 {
Thumbnail
這些章節的目的是為了介紹JavaScript中的各種數據類型,包括基礎類型和物件類型,以及如何將數據從一種類型轉換為另一種類型。此外,還介紹了如何創建自定義類型,以及如何使用JavaScript中的陣列、集合和字典。
Thumbnail
本文詳細介紹了Python中的各種資料型別,包括整數、字串、清單、元組、集合和字典,並提供了相關的操作範例。此外,還解釋了如何在Python中定義和操作變數,包括如何同時對多個變數進行賦值。
Thumbnail
JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。 JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。 JSON由兩種結構組成:物件(Object)和陣列(Array)。
※ 常用Object(物件)型態的方法: 拿到object裡面某個key的value(值): 拿到所有屬性: ※ 存取物件屬性:點記法與括號記法 使用點記法 (dot notation) 或括號記法 (bracket notation) 來存取物件的值,以下兩種寫法的結果是一樣的: //
Thumbnail
JS 資料型別分為兩大類,原始型別 (Primitive values) 和物件型別 (Objects)。
Thumbnail
f字符串(f-string)在Python 3.6版本引入了新特性,可以更方便地格式化字符串。本文介紹了f-string的基本使用方法,以及表達式、運算符、格式化控制、字典和列表的應用,以及調用方法和函數等。f-string提供了一種更靈活的方式,使你能夠控制字符串的外觀,以滿足不同情況下的需求。
Thumbnail
JSON 格式因為其輕巧、易於讀寫的特性,所以普遍應用於數據儲存。本文將介紹如何使用 Python 來讀取、處理、解析和修改 JSON 檔案。