在現代的資料交換和存盤中,JSON(JavaScript Object Notation)作為一種輕量級的資料交換格式,備受青睞,它不僅易于閱讀和理解,還可以靈活地表達和存盤高維資料,本文將介紹如何在 Python 中操作 JSON 檔案,實作資料的序列化和反序列化,
1. JSON 資料格式
JSON 格式采用鍵值對的方式表達資訊,它的值可以是物件、陣列、字串、整數、浮點數、布爾型或空值,下面是一個 JSON 資料的例子:
{
"name": "kira",
"age": 18,
"hobby": ["唱歌", "吹牛"],
"friends": [
{"name": "劉德華"},
{"name": "梁朝偉"}
]
}
在實際作業中,我們可以根據需要擴展和定制這種資料格式,以適應不同的場景和業務需求,
2. Python 操作 JSON 檔案
Python 提供了內置的 json 模塊,用于決議和操作 JSON 資料,
2.1 JSON 反序列化為 Python 物件
將 JSON 資料反序列化為 Python 物件是常見的操作,可以利用 json.loads() 方法實作,
import json
json_str = '{"name":"kira","age":18}'
print(json_str, type(json_str))
load_data = https://www.cnblogs.com/Nephalem-262667641/archive/2023/06/25/json.loads(json_str)
print(load_data, type(load_data))
運行結果:
{"name":"kira","age":18} <class 'str'>
{'name': 'kira', 'age': 18} <class 'dict'>
此外,如果需要從 JSON 檔案中加載資料,可以使用 json.load() 方法,
import json
with open('kira.json', 'r', encoding='utf-8') as f:
load_data = https://www.cnblogs.com/Nephalem-262667641/archive/2023/06/25/json.load(f)
print(load_data, type(load_data))
運行結果:
{'name': 'kira', 'age': 18, 'hobby': ['唱歌', '吹牛'], 'friends': [{'name': '劉德華'}, {'name': '梁朝偉'}]} <class 'dict'>
2.2 Python 序列化為 JSON
與反序列化相對應,Python 可以將物件序列化為 JSON 資料,json.dumps() 方法可以實作這一功能,
import json
data = https://www.cnblogs.com/Nephalem-262667641/archive/2023/06/25/{"name": "kira",
"age": 18,
"hobby": ["唱歌", "吹牛"],
"friends": [
{"name": "劉德華"},
{"name": "梁朝偉"}
]
}
json_str = json.dumps(data)
print(json_str)
print(json.dumps(data, ensure_ascii=False))
print(json.dumps(data, ensure_ascii=False, indent=4))
print(json.dumps(data, ensure_ascii=False, indent=4, sort_keys=True))
運行結果:
{"name": "kira", "age": 18, "hobby": ["\u5531\u6b4c", "\u5439\u725b"], "friends": [{"name": "\u5218\u5fb7\u534e"}, {"name": "\u6881\u671d\u4f1f"}]}
{"name": "kira", "age": 18, "hobby": ["唱歌", "吹牛"], "friends": [{"name": "劉德華"}, {"name": "梁朝偉"}]}
{
"name": "kira",
"age": 18,
"hobby": [
"唱歌",
"吹牛"
],
"friends": [
{
"name": "劉德華"
},
{
"name": "梁朝偉"
}
]
}
{
"age": 18,
"friends": [
{
"name": "劉德華"
},
{
"name": "梁朝偉"
}
],
"hobby": [
"唱歌",
"吹牛"
],
"name": "kira"
}
如果需要將 Python 物件序列化后寫入 JSON 檔案,可以使用 json.dump() 方法,
import json
data = https://www.cnblogs.com/Nephalem-262667641/archive/2023/06/25/{"name": "kira",
"age": 18,
"hobby": ["唱歌", "吹牛"],
"friends": [
{"name": "劉德華"},
{"name": "梁朝偉"}
]
}
with open('first.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
通過上述方法,我們可以輕松地在 Python 中進行 JSON 資料的序列化和反序列化操作,無論是資料交換還是資料存盤,JSON 都是一種簡單而高效的選擇,在實際作業中,我們可以根據具體需求靈活運用 JSON 的優勢,提高作業效率,
3 作業中的常見場景
3.1 網路請求和回應
在web開發中,客戶端和服務器之間得資料傳輸通常使用JSON格式,客戶端可以將資料封裝成 JSON 字串,通過網路請求發送給服務器,服務器接收到 JSON 資料后,可以使用 Python 中的 JSON 模塊將其反序列化為 Python 物件進行處理,處理完成后,服務器可以將結果序列化為 JSON 資料,發送給客戶端作為回應,例如:
服務器端(Python):
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route('/api/data', methods=['POST'])
def receive_data():
data = https://www.cnblogs.com/Nephalem-262667641/archive/2023/06/25/request.get_json()
# 對接收到的資料進行處理
processed_data = process_data(data)
# 將處理后的資料作為 JSON 回應回傳給客戶端
return jsonify(processed_data)
def process_data(data):
# 在這里進行資料處理的邏輯
# ...
return processed_data
if __name__ =='__main__':
app.run()
客戶端(JavaScript):
const data = https://www.cnblogs.com/Nephalem-262667641/archive/2023/06/25/{
name:'測驗玩家勇哥',
age: 18,
hobby: ['唱歌', '吹牛'],
};
fetch('/api/data', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
})
.then(response => response.json())
.then(responseData =https://www.cnblogs.com/Nephalem-262667641/archive/2023/06/25/> {
// 處理從服務器回傳的回應資料
console.log(responseData);
});
上述就是客戶端語服務器端之間使用JSON資料傳輸互動的常見場景,
3.2 組態檔管理
JSON 格式資料非常適合用于存盤和管理組態檔,當然資料檔案的使用之前勇哥有一篇文章詳細介紹過,忘記了的小伙伴可以去復習一下,傳送門:,下面舉個荔枝:
讀取組態檔:
import json
def read_config_file(file_path):
with open(file_path, 'r') as f:
config_data = https://www.cnblogs.com/Nephalem-262667641/archive/2023/06/25/json.load(f)
return config_data
# 讀取組態檔
config = read_config_file('config.json')
# 獲取配置項的值
db_host = config['database']['host']
db_port = config['database']['port']
修改組態檔:
import json
def update_config_file(file_path, new_config):
with open(file_path, 'w') as f:
json.dump(new_config, f, indent=4)
# 讀取組態檔
config = read_config_file('config.json')
# 修改配置項的值
config['database']['port'] = 5432
# 更新組態檔
update_config_file('config.json', config)
資料持久化存盤也是可以寫道JSON檔案中的,本文就不做過多的描寫了,
總結
以上就是勇哥今天為各位小伙伴準備的內容,如果你想了解更多關于Python自動化測驗的知識和技巧,歡迎關注:
我的公眾號:測驗玩家勇哥
博客(奈非天的主頁 - 博客園 (cnblogs.com))
我會不定期地分享更多的精彩內容,感謝你的閱讀和支持!
本文來自博客園,作者:奈非天,轉載請注明原文鏈接:https://www.cnblogs.com/Nephalem-262667641/p/17460169.html
本文來自博客園,作者:測驗玩家勇哥,轉載請注明原文鏈接:https://www.cnblogs.com/Nephalem-262667641/p/17503535.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/555944.html
標籤:其他
上一篇:如何重繪 DNS 快取 (macOS, Linux, Windows)
下一篇:返回列表
