Python 中的 JSON 操作:简单、高效的数据交换格式

这篇具有很好参考价值的文章主要介绍了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 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文件中的,本文就不做过多的描写了。

总结

以上就是勇哥今天为各位小伙伴准备的内容,如果你想了解更多关于Python自动化测试的知识和技巧,欢迎关注:

我的公众号:测试玩家勇哥

博客(奈非天的主页 - 博客园 (cnblogs.com))

我会不定期地分享更多的精彩内容。感谢你的阅读和支持!文章来源地址https://www.toymoban.com/news/detail-499680.html

本文来自博客园,作者:奈非天,转载请注明原文链接:https://www.cnblogs.com/Nephalem-262667641/p/17460169.html

在现代的数据交换和存储中,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文件中的,本文就不做过多的描写了。

总结

以上就是勇哥今天为各位小伙伴准备的内容,如果你想了解更多关于Python自动化测试的知识和技巧,欢迎关注:

我的公众号:测试玩家勇哥

博客(奈非天的主页 - 博客园 (cnblogs.com))

我会不定期地分享更多的精彩内容。感谢你的阅读和支持!

到了这里,关于Python 中的 JSON 操作:简单、高效的数据交换格式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python提取JSON格式数据

    我们经常会用到json数据,json数据格式主要是用来和不同语言之间进行交互 比如你要给java端的提供数据,你需要将自己的数据转换为json格式才行 所以不管是提供给后端其他人,还是从API返回的数据结果,我们都需要封装成json数据格式或者解析json数据 json的数据格式类似于

    2023年04月24日
    浏览(53)
  • Python的pandas库来实现将Excel文件转换为JSON格式的操作

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Python案例分享专栏 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:Python的pandas库来实现

    2024年02月09日
    浏览(49)
  • Python(21)json.dumps()使用indent参数 格式化输出json数据格式

    json.dumps() 方法 将一个Python数据结构转换为JSON字符串 输出为 这样的格式一般都不优美,当数据很多的时候,看得就不是很直观方便。 可以使用 indent=4 参数来对json进行数据格式化输出,会根据数据格式缩进显示,读起来更加清晰 用法如下 输出为 json.dumps()方法,参数解释

    2024年02月08日
    浏览(50)
  • 【Python】-- python与json数据格式的转换

    什么是json? json是一种轻量级的数据交互格式,可以按照json指定的格式去组织和封装数据。 json主要功能 json是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递与交互。 json的作用 为了让不同的语言都能相互通用的传递数据,json是一种很好的中转数据

    2024年02月11日
    浏览(37)
  • Python小白入门:文件、异常处理和json格式存储数据

    所用资料 代码中所用到的文件可以从下面的网站进行下载: https://www.ituring.com.cn/book/2784 open函数 打开 一个文件。 接收参数为需要打开的文件名 。Python会在 当前执行的文件所在目录下 查找指定文件,因此需要把pi_digits.txt文件放在执行文件的同目录下。 open函数返回一个表示

    2024年02月13日
    浏览(52)
  • Vue使用axios用post方式将表单中的数据以json格式提交给后端接收

    1.后端controller层代码代码 我采用的接收形式数据是json格式 2.前端登录注册界面代码 3.遇到的问题: 3.1. 我们首先在Vue data中定义一个存放表单数据的registform{},然后给它添加上属性,在表单input处使用v-model绑定。 3.2. 接下来将registform保存到datata变量中,然后就是axios的发送请

    2023年04月27日
    浏览(55)
  • Python自动化测试用例:如何优雅的完成Json格式数据断言

    目录 前言 直接使用 优化 封装 小结 进阶 总结  资料获取方法 记录Json断言在工作中的应用进阶。 很早以前写过一篇博客,记录当时获取一个多级json中指定key的数据: 后来在写用例生成过程中,发现重复的断言描述信息较多,大多数数据返回其实都是标准的json,所以将整个

    2024年02月13日
    浏览(45)
  • python熟悉python基础语法,了解html网络结构,了解json格式数据,含有字符串

    Python网络爬虫是利用Python编写的程序,通过自动化地访问网页、解析html或json数据,并提取所需信息的技术。下面将详细介绍一些与Python网络爬虫相关的重要知识点。   变量和数据类型:学习如何声明变量以及Python中的常用数据类型,如数字、字符串、列表、字典等。 条件语

    2024年02月10日
    浏览(45)
  • 使用Pydantic将Python对象转换为其他数据格式,例如JSON、XML、YAML

    更多文章:技数未来 Pydantic是一个在Python中的数据验证和解析库。它可以将Python对象转换成其他数据格式,如JSON、XML和YAML。在使用Pydantic之前,我们需要进行一些准备工作: 1. 安装Python和pip:确保你的计算机上安装了Python以及pip包管理器。 2. 创建虚拟环境(可选):建议使

    2024年02月15日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包