• 跳至主要導覽
  • 跳至主要內容
  • 跳至主要資訊欄
Office 指南

Office 指南

辦公室工作實用教學

  • Excel
  • Word
  • PowerPoint
  • Windows
  • PowerShell
  • R

Python 讀取、產生 JSON 格式資料教學與範例

介紹如何在 Python 中使用內建的 json 模組,讀取、解析、產生與寫入 JSON 格式資料。

讀取 JSON 檔案

假設我們有一個 JSON 檔案 data.json,其內容如下:

{
  "name": "Jason",
  "age": 21,
  "skill": ["Python", "C/C++"],
  "married": false
}

如果要在 Python 中讀取 data.json 這個 JSON 檔案,可以使用 Python 內建 json 模組中的 load() 函數:

import json

# 開啟 JSON 檔案
with open("data.json") as f:

    # 讀取 JSON 檔案
    p = json.load(f)

    # 查看整個 JSON 資料解析後的結果
    print("p =", p)

    # 取得 name 的值
    print("name =", p["name"])

    # 取得 skill 的值
    print("skill =", p["skill"])
p = {'name': 'Jason', 'age': 21, 'skill': ['Python', 'C/C++'], 'married': False}
name = Jason
skill = ['Python', 'C/C++']

load() 函數預設會使用 json.JSONDecoder() 依照以下的對應方式將 JSON 資料轉為 Python 內部的資料格式:

原始 JSON 類型 轉為 Python 的類型
object dict
array list
string str
number (int) int
number (real) float
true True
false False
null None

解析 JSON 字串資料

如果在 Python 中要直接解析字串中的 JSON 資料,可以使用 json 模組的 loads() 函數:

import json

# JSON 字串資料
jsonStr = '{"name": "Jason", "age": 21, "skill": ["Python", "C/C++"], "married": false}'

# 解析 JSON 字串資料
p = json.loads(jsonStr)

# 查看整個 JSON 資料解析後的結果
print("p =", p)

# 取得 name 的值
print("name =", p["name"])

# 取得 skill 的值
print("skill =", p["skill"])
p = {'name': 'Jason', 'age': 21, 'skill': ['Python', 'C/C++'], 'married': False}
name = Jason
skill = ['Python', 'C/C++']

loads() 函數的效果跟 load() 函數相同,只不過 loads 的資料來源是字串,而 load() 是從檔案讀取資料。

寫入 JSON 檔案

若要將 Python 中的各種資料轉為 JSON 格式並儲存至 JSON 檔案中,可以使用 dump() 函數:

import json

# Python 的 dict 類型資料
myDict = {
    "name": "Jason",
    "age": 21,
    "skill": ["Python", "C/C++"],
    "married": False
}

# 將 Python 資料轉為 JSON 格式,儲存至 output.json 檔案
with open("output.json", "w") as f:
    json.dump(myDict, f, indent = 4)

這裡產生的 output.json 檔案內容為:

{
    "name": "Jason",
    "age": 21,
    "skill": [
        "Python",
        "C/C++"
    ],
    "married": false
}

dump() 函數預設會使用 json.JSONEncoder() 依照以下的對應方式將 Python 內部的資料轉為 JSON 格式的資料:

原始 Python 類型 轉為 JSON 的類型
dict object
list, tuple array
str string
int, float, int- & float-derived Enums number
True true
False false
None null

轉為 JSON 字串資料

若要將 Python 中的各種資料轉為 JSON 格式的字串,可以改用 dumps() 函數:

import json

# Python 的 dict 類型資料
myDict = {
    "name": "Jason",
    "age": 21,
    "skill": ["Python", "C/C++"],
    "married": False
}

# 將 Python 資料轉為 JSON 格式的字串
print(json.dumps(myDict))
{"name": "Jason", "age": 21, "skill": ["Python", "C/C++"], "married": false}

若需要加上排版以方便閱讀,可以使用 indent 參數指定縮排長度:

# 加入排版
print(json.dumps(myDict, indent = 4))
{
    "name": "Jason",
    "age": 21,
    "skill": [
        "Python",
        "C/C++"
    ],
    "married": false
}

參考資料

  • Python json 模組官方文件
  • The Geek Stuff:5 Python Examples to Read and Write JSON files for Encode and Decode

分類:Python

讀者互動方式

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

主要資訊欄

搜尋

近期文章

  • Linux 檢查、測試 CPU AES-NI 硬體加速加密指令集教學
  • CentOS Linux 7.9 自行編譯、安裝 OpenSSH 9.0p1 伺服器教學與範例
  • Python 使用 zipfile 模組壓縮、解壓縮 ZIP 檔案教學與範例
  • Python 以 LINE Notify 自動傳送即時訊息、圖片教學與範例
  • Linux 使用 Prometheus 與 Grafana 監控伺服器狀態、發送告警 Email 簡訊教學與範例
  • Linux 設定 pam_tty_audit 記錄 SSH 使用者操作指令教學與範例
  • Linux 封鎖、解鎖登入失敗次數過多的帳號 pam_faillock 教學與範例
  • Python 使用 pytube 自動下載 YouTube 影片教學與範例

推薦網站

  • Udemy 線上教學課程
  • Coursera 線上教學課程

關注本站

  • 電子郵件
  • Facebook

公益

  • 家扶基金會
  • 台灣世界展望會
  • Yahoo 奇摩公益
  • igiving 公益網
  • 兒福聯盟

Copyright © 2021 · Office Guide