在现代的数据交换和存储中,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 = 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 = 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 = { | |
"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 = { | |
"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 = 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 = { | |
name: '测试玩家勇哥', | |
age: 18, | |
hobby: ['唱歌', '吹牛'], | |
}; | |
fetch('/api/data', { | |
method: 'POST', | |
headers: { | |
'Content-Type': 'application/json', | |
}, | |
body: JSON.stringify(data), | |
}) | |
.then(response => response.json()) | |
.then(responseData => { | |
// 处理从服务器返回的响应数据 | |
console.log(responseData); | |
}); |
上述就是客户端语服务器端之间使用JSON数据传输交互的常见场景。
3.2 配置文件管理
JSON 格式数据非常适合用于存储和管理配置文件,当然数据文件的使用之前勇哥有一篇文章详细介绍过,忘记了的小伙伴可以去复习一下,传送门:,下面举个荔枝:
读取配置文件:
import json | |
def read_config_file(file_path): | |
with open(file_path, 'r') as f: | |
config_data = 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文件中的,本文就不做过多的描写了。
最后:下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

全部资料获取


本文介绍了JSON作为数据交换格式的使用,以及如何在Python中进行JSON数据的序列化和反序列化,包括使用json模块的loads()和dumps()方法。同时,文章提到了在Web开发中JSON在网络请求和响应中的作用,以及在配置文件管理方面的应用。
716

被折叠的 条评论
为什么被折叠?



