最新要闻

广告

手机

江苏外贸提质升级呈现新变化 “新三样”乘风破浪领跑出口

江苏外贸提质升级呈现新变化 “新三样”乘风破浪领跑出口

库迪咖啡在哈尔滨成立新公司 含自动售货机销售业务_资讯

库迪咖啡在哈尔滨成立新公司 含自动售货机销售业务_资讯

家电

Python 中的 JSON 操作:简单、高效的数据交换格式|焦点速递

来源:博客园

在现代的数据交换和存储中,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 jsonjson_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} {"name": "kira", "age": 18} 

此外,如果需要从 JSON 文件中加载数据,可以使用 json.load()方法。

import jsonwith 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": "梁朝伟"}]} 

2.2 Python 序列化为 JSON

与反序列化相对应,Python 可以将对象序列化为 JSON 数据。json.dumps()方法可以实现这一功能。

import jsondata = {    "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 jsondata = {    "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, requestapp = 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_dataif __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 jsondef 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 jsondef 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

关键词: