iT邦幫忙

2024 iThome 鐵人賽

DAY 28
0

在Python中,json 模塊提供了處理JSON(JavaScript Object Notation)數據的功能。JSON是一種輕量級的數據交換格式,適合於人和機器讀取。Python的 json 模塊可以方便地將 Python對象轉換為JSON字符串,或者將JSON字符串解析為Python對象。

壹、讀取和寫入 JSON 數據

一、將 Python 對象轉換為 JSON 字符串

使用 json.dumps() 方法可以將 Python 對象(如字典、列表等)轉換為 JSON 字符串。

import json

data = {
    "name": "Alice",
    "age": 25,
    "is_student": False,
    "subjects": ["Math", "Science"]
}

json_str = json.dumps(data)
print(json_str)

輸出:

{"name": "Alice", "age": 25, "is_student": false, "subjects": ["Math", "Science"]}

二、將 JSON 字符串轉換為 Python 對象

使用 json.loads() 可以將 JSON 字符串解析為 Python 對象,通常解析為字典或列表。

import json

json_str = '{"name": "Alice", "age": 25, "is_student": false, "subjects": ["Math", "Science"]}'
data = json.loads(json_str)

print(data)
print(data["name"])  # 訪問 Python 字典中的數據

輸出:

{'name': 'Alice', 'age': 25, 'is_student': False, 'subjects': ['Math', 'Science']}
Alice

三、將 Python 對象寫入 JSON 文件

使用 json.dump() 方法可以將 Python 對象寫入 JSON 文件。

import json

data = {
    "name": "Alice",
    "age": 25,
    "is_student": False,
    "subjects": ["Math", "Science"]
}

with open('data.json', 'w') as file:
    json.dump(data, file)

這樣會將數據以 JSON 格式寫入到 data.json 文件中。

四、從 JSON 文件讀取數據

使用 json.load() 方法可以從 JSON 文件中讀取數據,並將其解析為 Python 對象。

import json

with open('data.json', 'r') as file:
    data = json.load(file)

print(data)

貳、JSON 操作的常用參數

一、格式化輸出的 JSON

當使用 json.dumps()json.dump() 時,可以使用 indent 參數來讓輸出的 JSON 格式更加美觀,增加縮進級別。

import json

data = {
    "name": "Alice",
    "age": 25,
    "is_student": False,
    "subjects": ["Math", "Science"]
}

json_str = json.dumps(data, indent=4)
print(json_str)

輸出:

{
    "name": "Alice",
    "age": 25,
    "is_student": false,
    "subjects": [
        "Math",
        "Science"
    ]
}

二、確保非 ASCII 字符的處理

如果 JSON 包含非 ASCII 字符,例如中文或其他特殊符號,可以使用 ensure_ascii=False 來確保這些字符能夠正確顯示。

import json

data = {"name": "李四", "age": 30}

json_str = json.dumps(data, ensure_ascii=False)
print(json_str)

輸出:

{"name": "李四", "age": 30}

三、設置鍵的排序

可以通過 sort_keys=True 參數來對輸出的 JSON 中的鍵進行排序。

import json

data = {
    "name": "Alice",
    "age": 25,
    "is_student": False,
    "subjects": ["Math", "Science"]
}

json_str = json.dumps(data, indent=4, sort_keys=True)
print(json_str)

輸出:

{
    "age": 25,
    "is_student": false,
    "name": "Alice",
    "subjects": [
        "Math",
        "Science"
    ]
}

參、JSON 和 Python 對象之間的對應關係

json 模塊中,JSON 和 Python 對象之間存在對應關係:

JSON Python
object dict
array list
string str
number int/float
true True
false False
null None

肆、錯誤處理

在處理 JSON 時,可能會遇到無效的 JSON 字符串,這時會拋出 json.JSONDecodeError 異常。我們可以使用 try-except 來捕捉和處理這類異常。

import json

json_str = '{"name": "Alice", "age": 25, "is_student": False'

try:
    data = json.loads(json_str)
except json.JSONDecodeError as e:
    print(f"解析 JSON 出錯: {e}")

輸出:

解析 JSON 出錯: Expecting ',' delimiter: line 1 column 42 (char 41)

上一篇
第27天:網絡請求 part2
下一篇
第29天:單元測試 part1
系列文
python30天入門學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言