JSON 格式解析:{} 與 [] 的使用時機與 Python 實戰

更新 發佈閱讀 10 分鐘

引言

JSON(JavaScript Object Notation)已成為現代網路上資料交換的標準格式之一,無論你是前端開發者、後端工程師,還是資料科學家,都一定會遇到它。JSON 的簡潔性和易讀性讓它比 XML 更受歡迎,但對於初學者來說,何時使用方括號 [] 和何時使用花括號 {} 常常讓人困惑。本文將深入解析 JSON 格式,並教你如何在 Python 中輕鬆轉換 JSON 資料。

什麼是 JSON?

JSON 是一種輕量級的資料交換格式,具有以下特點:

  • 基於純文字,易於閱讀和編寫
  • 與程式語言無關,幾乎所有現代語言都支援
  • 結構化資料表示,支援巢狀結構

JSON 的基本結構只有兩種:

  1. 物件(Object):使用 {} 表示
  2. 陣列(Array):使用 [] 表示

一、何時使用 {}(物件/字典)

1.1物件的基本結構

{
"key1": "value1",
"key2": "value2",
"key3": 123
}

1.2使用時機

  • 表示具有屬性的實體
{
"name": "張小明",
"age": 25,
"email": "[email protected]"
}
  • 鍵值對集合
{
"users": 150,
"active": true,
"last_login": "2023-10-15T08:30:00Z"
}
  • 配置檔案
{
"database": {
"host": "localhost",
"port": 5432,
"username": "admin"
},
"settings": {
"theme": "dark",
"language": "zh-TW"
}
}
  • API 請求/回應
{
"status": "success",
"data": {
"id": 12345,
"type": "user"
}
}

二、何時使用 [](陣列/列表)

2.1陣列的基本結構

["value1", "value2", "value3"]

2.2使用時機

  • 相同類型的項目集合
["apple", "banana", "orange", "grape"]
  • 數字列表
[1, 2, 3, 4, 5]
  • 物件陣列
[
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"},
{"id": 3, "name": "Charlie"}
]
  • 多維陣列
[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]

三、{} 和 [] 的組合使用

真實世界的 JSON 資料通常是兩者的組合:

{
"company": "TechCorp",
"employees": [
{
"id": 1,
"name": "王大明",
"skills": ["Python", "JavaScript", "SQL"]
},
{
"id": 2,
"name": "李小美",
"skills": ["Java", "Docker", "Kubernetes"]
}
],
"departments": [
{
"name": "Engineering",
"manager": "王大明"
},
{
"name": "Marketing",
"manager": "李小美"
}
]
}

四、JSON 與 Python 的對應關係

vocus|新世代的創作平台

五、Python 中的 JSON 轉換

5.1將 Python 物件轉換為 JSON(序列化)

#導入 JSON 模組
import json

# Python 字典轉 JSON 字串
python_dict = {
"name": "張小明",
"age": 25,
"hobbies": ["閱讀", "游泳", "攝影"],
"is_student": True
}

json_string = json.dumps(python_dict, ensure_ascii=False, indent=2)
print(json_string)
# 輸出:
# {
# "name": "張小明",
# "age": 25,
# "hobbies": ["閱讀", "游泳", "攝影"],
# "is_student": true
# }

# 將 JSON 寫入檔案
with open('data.json', 'w', encoding='utf-8') as f:
json.dump(python_dict, f, ensure_ascii=False, indent=2)

5.2將 JSON 轉換為 Python 物件(反序列化)

#導入 JSON 模組
import json

# JSON 字串轉 Python 字典
json_data = '{"name": "張小明", "age": 25, "city": "台北"}'
python_obj = json.loads(json_data)
print(python_obj["name"]) # 輸出:張小明
print(type(python_obj)) # 輸出:<class 'dict'>

# 從檔案讀取 JSON
with open('data.json', 'r', encoding='utf-8') as f:
data = json.load(f)
print(data)

5.3處理複雜的 JSON 結構

# 複雜的 JSON 資料
complex_json = '''
{
"company": "TechCorp",
"employees": [
{"id": 1, "name": "王大明", "skills": ["Python", "JavaScript"]},
{"id": 2, "name": "李小美", "skills": ["Java", "Docker"]}
],
"stats": {
"total_employees": 2,
"average_age": 28.5
}
}
'''

# 轉換為 Python 物件
data = json.loads(complex_json)

# 存取資料
print(f"公司名稱: {data['company']}")
print(f"員工數量: {data['stats']['total_employees']}")
print("第一位員工的技能:", data['employees'][0]['skills'])

# 修改資料
data['employees'].append({
"id": 3,
"name": "陳小華",
"skills": ["Go", "Kubernetes"]
})

# 轉回 JSON
updated_json = json.dumps(data, ensure_ascii=False, indent=2)
print(updated_json)

六、實用技巧與常見問題

6.1處理中文編碼

# 正確處理中文
json.dumps(data, ensure_ascii=False, indent=2)
    • ensure_ascii 用法如下
    vocus|新世代的創作平台
    • indent 是控制 JSON 排版縮排格式 的參數。
    vocus|新世代的創作平台

    總結

    JSON 格式的選擇取決於你的資料結構:
    • 使用 {} 當你需要鍵值對結構,表示物件或屬性集合
    • 使用 [] 當你需要有序列表,表示相同類型的項目集合
    在 Python 中,使用 json 模組可以輕鬆地在 JSON 和 Python 物件之間轉換:
    • json.dumps() 將 Python 物件轉為 JSON 字串
    • json.loads() 將 JSON 字串轉為 Python 物件
    • 記得使用 ensure_ascii=False 來正確處理中文
    掌握 JSON 格式的正確使用時機,並熟練運用 Python 的 JSON 處理功能,將使你在資料處理、API 開發和系統整合等方面更加得心應手。現在就去嘗試處理一些 JSON 資料,實踐這些技巧吧!
留言
avatar-img
慵懶貓系的小墨魚:數據外的日常觀察
3會員
50內容數
小墨魚,一位白天擅長資料分析與統計建模的數據工作者,夜裡則沉浸在書本與文字裡,透過閱讀與寫作與世界對話。工作之餘,也兼職統計家教,協助學生理解複雜的統計概念與軟體操作。這裡記錄我的書評、生活觀察、科技碎念,有時也寫下關於時間與情緒的小片段。願這些文字,成為我們在日常中相遇的溫柔片刻。
2026/01/31
本文深入解析 CI/CD 的核心概念(持續整合與持續部署),並介紹 GitHub Actions 如何作為一個強大的自動化平臺,協助開發團隊提升效率與可靠性。從基礎的 YAML 設定檔到進階的矩陣測試與 secrets 管理,提供實用的技巧與最佳實踐,引導開發者踏上自動化之旅。
Thumbnail
2026/01/31
本文深入解析 CI/CD 的核心概念(持續整合與持續部署),並介紹 GitHub Actions 如何作為一個強大的自動化平臺,協助開發團隊提升效率與可靠性。從基礎的 YAML 設定檔到進階的矩陣測試與 secrets 管理,提供實用的技巧與最佳實踐,引導開發者踏上自動化之旅。
Thumbnail
2025/12/02
無論是統計學習新手,還是資深資料分析師,都需要實戰資料來精進技能。本文整理了 Kaggle、UCI、Data.gov、各國資料開放平臺,以及生物醫學、深度學習等領域的公開資料庫。依據不同用途(綜合競賽、政府事務、專業領域)進行分類介紹,並提供實用的數據搜尋、清理與分析技巧,助您成為數據處理的佼佼者。
Thumbnail
2025/12/02
無論是統計學習新手,還是資深資料分析師,都需要實戰資料來精進技能。本文整理了 Kaggle、UCI、Data.gov、各國資料開放平臺,以及生物醫學、深度學習等領域的公開資料庫。依據不同用途(綜合競賽、政府事務、專業領域)進行分類介紹,並提供實用的數據搜尋、清理與分析技巧,助您成為數據處理的佼佼者。
Thumbnail
2025/11/13
本文將介紹如何利用 Linux 的 systemd 服務管理器,為 AWS EC2 上的 Jupyter Lab 建立可靠的系統服務。透過簡單三大步驟,您可以解決 SSH 連線中斷導致 Jupyter Lab 無法使用的問題,使其能夠在伺服器重啟後自動運行,實現 24 小時不間斷的遠端程式開發環境。
Thumbnail
2025/11/13
本文將介紹如何利用 Linux 的 systemd 服務管理器,為 AWS EC2 上的 Jupyter Lab 建立可靠的系統服務。透過簡單三大步驟,您可以解決 SSH 連線中斷導致 Jupyter Lab 無法使用的問題,使其能夠在伺服器重啟後自動運行,實現 24 小時不間斷的遠端程式開發環境。
Thumbnail
看更多
你可能也想看
Thumbnail
我們在「」有稍微介紹了JSON格式, 也知曉JSON格式非常簡單暴力, 只要一對<key>與<value>就能成行, 對於工程人員來說已經比XML、文字檔…等傳統格式更加容易理解, 而且也具備一定的資料型態基礎, 但使用這麼久以來常常發現到想要對某個欄位註解時好像不太容易, 頂多就是多一個欄位叫做「
Thumbnail
我們在「」有稍微介紹了JSON格式, 也知曉JSON格式非常簡單暴力, 只要一對<key>與<value>就能成行, 對於工程人員來說已經比XML、文字檔…等傳統格式更加容易理解, 而且也具備一定的資料型態基礎, 但使用這麼久以來常常發現到想要對某個欄位註解時好像不太容易, 頂多就是多一個欄位叫做「
Thumbnail
本文介紹了Python如何使用websockets進行雙向溝通,包括文字、json、xml和音訊的傳遞。特別著重於json資料交換格式,以及websockets通道的基本流程和關鍵的編碼與解碼。最終談到WebSocket對於傳統同步程式的轉變及對asyncio等套件的重要性。
Thumbnail
本文介紹了Python如何使用websockets進行雙向溝通,包括文字、json、xml和音訊的傳遞。特別著重於json資料交換格式,以及websockets通道的基本流程和關鍵的編碼與解碼。最終談到WebSocket對於傳統同步程式的轉變及對asyncio等套件的重要性。
Thumbnail
在現代開發中,JSON 是非常常見的資料格式,例如: API 回傳資料 設定檔(config) 前後端資料交換 這篇教學會帶你用 Python 讀取 JSON 檔案 👍
Thumbnail
在現代開發中,JSON 是非常常見的資料格式,例如: API 回傳資料 設定檔(config) 前後端資料交換 這篇教學會帶你用 Python 讀取 JSON 檔案 👍
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
另外站長打個廣告,最近站長正在嘗試經營遊戲直播平台希望大家能夠幫忙追隨訂閱一下,站長真心感謝~ TWITCH直播: https://www.twitch.tv/saioyan Youtube: https://www.youtube.com/channel/UCtCeeanvsVdAuqNU
Thumbnail
另外站長打個廣告,最近站長正在嘗試經營遊戲直播平台希望大家能夠幫忙追隨訂閱一下,站長真心感謝~ TWITCH直播: https://www.twitch.tv/saioyan Youtube: https://www.youtube.com/channel/UCtCeeanvsVdAuqNU
Thumbnail
序列化(serialization)是將資料結構或對象轉換為一個格式,可以被儲存到文件或記憶體中,或者可以透過網路傳輸到另一個系統環境。這使得資料可以在不同的系統之間進行交換,並在需要時重新建構回原始的資料結構。本文將介紹兩個好用的Python套件-JSON與Pickle,並比較兩者的不同。
Thumbnail
序列化(serialization)是將資料結構或對象轉換為一個格式,可以被儲存到文件或記憶體中,或者可以透過網路傳輸到另一個系統環境。這使得資料可以在不同的系統之間進行交換,並在需要時重新建構回原始的資料結構。本文將介紹兩個好用的Python套件-JSON與Pickle,並比較兩者的不同。
Thumbnail
關於json的資料交換格式請參考「【程式語言 - Javascript】輕量資料格式 JSON」, 我們常常會在使用套件的過程中發現回傳值的型態都會有「dict」的蹤跡, 為什麼呢? 因為動態、彈性、靈活, 不需要預先定義類別來明確指定每個欄位的內容, 但缺點就是文件必須寫清楚內容物是哪些, 否
Thumbnail
關於json的資料交換格式請參考「【程式語言 - Javascript】輕量資料格式 JSON」, 我們常常會在使用套件的過程中發現回傳值的型態都會有「dict」的蹤跡, 為什麼呢? 因為動態、彈性、靈活, 不需要預先定義類別來明確指定每個欄位的內容, 但缺點就是文件必須寫清楚內容物是哪些, 否
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。 JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。 JSON由兩種結構組成:物件(Object)和陣列(Array)。
Thumbnail
JSON(JavaScript Object Notation)是一種用於資料交換的輕量級資料格式,通常用於網路應用程式之間的資料傳遞。 JSON的格式易於閱讀和撰寫,也易於解析和產生,因此它在開發中被廣泛使用。 JSON由兩種結構組成:物件(Object)和陣列(Array)。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News