Python 操作 json 数据

软件测试|Python对JSON的解析和创建详解 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,已经成为当今互联网应用中广泛使用的数据格式之一。Python提供了内置的模块来解析和创建JSON数据,使得在Python中处理JSON变得非常简单。本文将详细介绍Python对JSON的解析和创建过程,并提供示例代码来帮助大家更好地理解。Python对JSON的解析和创建非常简单。json模块提供了loads()函数用于解析JSON字符串,dumps()函数用于将Python对象转换为JSON字符串。 阅读详情

在Python中,操作JSON数据主要包括序列化(将Python对象转换为JSON格式)和反序列化(将JSON字符串转换回Python对象)。

以下是使用Python内置的json模块进行这些操作的基本示例:

JSON 序列化 (Serialization)

将Python对象转换成JSON字符串:


import json

# 定义一个Python字典或列表等可序列化的对象

data = {

"name": "Alice",

"age": 30,

"hobbies": ["reading", "programming"]

}

# 使用 json.dumps() 方法将 Python 对象转为 JSON 字符串

json_string = json.dumps(data)

print(json_string) # 输出:{"name": "Alice", "age": 30, "hobbies": ["reading", "programming"]}

JSON 反序列化 (Deserialization)

将JSON字符串转换成Python对象:


import json

# 假设我们有一个 JSON 格式的字符串

json_data = '{"name": "Bob", "age": 35, "hobbies": ["guitar", "travel"] }'

# 使用 json.loads() 方法将 JSON 字符串转为 Python 字典

python_obj = json.loads(json_data)

print(python_obj) # 输出:{'name': 'Bob', 'age': 35, 'hobbies': ['guitar', 'travel']}

# 或者从文件读取 JSON 数据并转换

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

python_obj_from_file = json.load(file)

print(python_obj_from_file)

注意事项:

JSON仅支持特定的数据类型,如数字、字符串、布尔值、null、数组(对应Python中的列表)和对象(对应Python中的字典)。Python中的一些非标准类型(如None、datetime对象、自定义类实例等)需要通过特殊方式处理才能正确地序列化和反序列化。

json.dumps()方法接受额外的参数用于控制序列化过程,例如ensure_ascii=False可以输出包含非ASCII字符的JSON字符串,indent用于美化输出,设置缩进。

json.load()和json.loads()在遇到不符合JSON格式的输入时会抛出json.JSONDecodeError异常。

在Python进行接口自动化测试时,操作JSON数据是常见且关键的步骤。通常情况下,我们会使用json模块处理HTTP请求中的JSON内容,并通过requests库发送这些请求到API服务器。以下是一个基本示例,展示如何构建和解析JSON数据以执行接口测试:

发送带有JSON数据的POST请求




import requests

import json

# 定义要发送的JSON数据

payload = {

"username": "testuser",

"password": "testpassword",

"email": "test@example.com"

}

# 将Python字典转换为JSON格式字符串

json_payload = json.dumps(payload)

# 设置请求头信息,告诉服务器我们正在发送JSON数据

headers = {'Content-Type': 'application/json'}

# 发送POST请求

response = requests.post('http://example.com/api/login', data=json_payload, headers=headers)

# 检查响应状态码是否正常

if response.status_code == 200:

# 如果响应成功,将其内容反序列化为Python对象

response_json = response.json()

print(response_json)

else:

print(f"请求失败,状态码:{response.status_code}")

# 根据需要对响应JSON数据进行断言或进一步处理

assert response_json['status'] == 'success'

解析返回的JSON响应

对于从API接收到的JSON响应,可以使用response.json()方法将响应体的内容转化为Python字典或列表以便于进行验证。

数据驱动测试

在数据驱动测试场景中,可以从文件读取多个JSON记录(例如,每行一个JSON对象),然后依次对每个记录执行相同的操作:


with open('test_data.json') as f:

test_cases = json.load(f)

for case in test_cases:

# 调整请求参数并发送请求

response = requests.post('http://example.com/api/endpoint', json=case)

# 针对每个测试用例进行相应的断言

assert_response(response, case)

这里,test_data.json文件可能包含多条记录,每一项都是一个待测试的JSON数据结构。在循环中,逐个发送请求并根据每个用例的结果进行验证。

json在接口自动化里的高级使用

在接口自动化测试中,JSON的高级使用通常涉及到更复杂的数据操作、模式验证以及高效地提取和比较响应数据。以下是一些高级用例:

JsonPath 或 JMESPath 的应用:

使用jsonpath或jmespath库来从复杂的JSON响应中精准提取数据,而无需遍历整个数据结构。


import jsonpath # or jmespath for JMESPath

response_json = {"users": [{"name": "Alice", "id": 1}, {"name": "Bob", "id": 2}]}

names = jsonpath.jsonpath(response_json, '$.users[*].name') # 返回 ['Alice', 'Bob']

JSON Schema验证:

使用jsonschema库对API返回的JSON响应进行模式匹配验证,确保其符合预定义的结构和约束条件。


from jsonschema import validate, ValidationError

schema = {

"type": "object",

"properties": {

"status": {"type": "string"},

"data": {"type": "array", "items": {"type": "object", "properties": {"id": {"type": "integer"}, "name": {"type": "string"}}}}

},

"required": ["status", "data"]

}

response = {"status": "ok", "data": [{"id": 1, "name": "Alice"}]}

try:

validate(instance=response, schema=schema)

print("Response matches the schema.")

except ValidationError as e:

print(f"Validation error: {e}")

动态构建请求体:

根据需求动态生成或修改JSON请求体,例如基于数据库查询结果构造请求参数。


def build_request_body(user_id):

user_data = get_user_from_database(user_id) # 假设这是一个获取用户信息的方法

request_body = {"user": {"id": user_data["id"], "name": user_data["name"]}}

return request_body

payload = build_request_body(1)

response = requests.post('http://example.com/api/update', json=payload)

批量执行与结果分析:

对于大批量的数据交互,可以将多个JSON请求组织成一个列表,并利用循环或异步方式发送请求,然后汇总所有响应的结果进行整体评估。

错误处理和容错机制:

对接收到的JSON数据进行深度检查,对于非标准格式或异常字段,能够有策略地处理并记录异常。

缓存和复用:

对于一些重复性的数据,如Token或者Header中的JWT,可以将其存储起来并在后续请求中复用,提高效率同时保持安全性。

通过以上这些高级技术,可以在接口自动化测试中更好地管理和操纵JSON数据,提高测试代码的质量和可维护性。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末自行领取】

​

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

【Python】 Python 中如何创建 json 文件? 在这个示例中,我们首先导入 `json` 模块,并创建了一个字典 `data`。然后,我们使用 `json.dump()` 方法将这个字典写入名为 "data.json" 的文件。文件将被创建在 Python 脚本的当前工作目录中。在 Python 中,您可以使用内置的 `json` 模块创建和操作 JSON 文件。3. 使用 `json.dump()` 方法将字典写入文件。2. 创建一个字典(使用 `{}`)。1. 导入 `json` 模块。# 写入 JSON 文件。 阅读详情

相关推荐

【强烈推荐】Python中JSON的基本使用(超详细)

Python中JSON的基本使用1. JSON简介2. JSON语法规则3. JSON数据类型4. JSON对象5. JSON数组6. JSON中常用的方法6.1 json.dumps()6.2 json.loads()6.3 json.dump()6.4 json.load()6.5 更多实例7. 参数详解8. JSON反序列化为对象9. 常见的错误9.1 读取多行的JSON文件10. 总结 1. JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 4万+

Python之json常见四种用法

Python之json

m0_63952680的博客 7057

工业质检实战:用海康VisionMaster的BLOB分析搞定PCB焊点缺陷检测

本文详细介绍了如何利用海康VisionMaster平台的BLOB分析技术,构建一套针对PCB焊点缺陷的自动化视觉检测方案。文章从核心原理出发,重点阐述了如何通过动态阈值分割和模板匹配定位,克服工业现场光照不均、位置偏移等挑战,实现虚焊、漏焊等缺陷的精准、稳定检测,并提供了实战调优与系统集成的关键思路。

weixin_29091105的博客 560

Python json文件常用操作

Python Json文件处理的四种常用方法

beichanbb的博客 4078

TESSY创建单元测试或集成测试工程

我们以tessy5.1为例,给大家展示单元测试和集成测试工程的创建过程。

空气中的告白专栏 1683

MIKE11实战:平原河网水动力建模从入门到精通(附GIS数据处理技巧)

本文系统介绍了MIKE11软件在平原河网水动力建模中的完整实战流程。从GIS数据预处理、河网构建、参数率定到结果分析,详细阐述了构建可靠数字孪生模型的关键步骤与技巧,旨在帮助水利工程师高效解决平原地区复杂水流模拟的挑战,为防洪决策提供科学依据。

weixin_28419039的博客 689

python json添加元素_Python 操作 json 数据

1. json 数据JSON(JavaScript Object Notation)` 是一种轻量级的数据交换格式,易于阅读和理解。JSON 格式可以对高纬数据进行表达和存储。JSON 格式通过键值对来表达信息,键是字符串,值可以是:值语法例如:{"name": "Felix","age": 18,"hobby": ["运动","妹子"],"friends": [{"name": "刘德华"},{...

weixin_39924198的博客 4111

从零复刻平衡小车(基于STM32F1)

平衡小车(基于STM32F1)

Legendyyy的博客 5040

使用 Python 对 JSON 数据进行读写操作

无论是从文件中读取 JSON 数据,还是直接解析字符串形式的 JSON,Python 的json模块都提供了极为简便的操作方式。你可以通过从文件中读取 JSON,通过解析 JSON 字符串,并且可以用和将 Python 对象转化为 JSON 格式的数据。通过这些示例代码,你可以处理简单到复杂的 JSON 结构,并且可以通过异常捕获提高程序的健壮性。

孔乙己的博客 1366

湿敏电阻HR202的两种驱动方案实测:IO充放电法 vs. 交流方波ADC法,哪个更适合你?

本文深入评测湿敏电阻HR202的两种驱动方案:IO充放电法和交流方波ADC法。通过原理图分析、精度实测和资源占用对比,揭示交流方波ADC法在精度和稳定性上的优势,特别适合长期监测场景。同时提供IO充放电法在资源受限情况下的应用建议,帮助工程师根据项目需求做出最优选择。

weixin_30421809的博客 466

SONiC (6) - SONiC 源码框架分析

https://github.com/sonic-net/sonic-utilitieshttps://github.com/sonic-net/sonic-snmpagenthttps://github.com/sonic-net/sonic-linux-kernelhttps://github.com/sonic-net/sonic-platform-commonhttps://github.com/sonic-net/sonic-platform-daemons以下是在 SONiC 中运行的容器列表:

qq_49477505的博客 1329

用 Python 操作 JSON 类型数据详解

JSON简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(...

python学习者的博客 4132

Proteus8.0仿真应用设计(九十一)基于STM32CubeMX、STM32F103C8T6 、FREERTOS、MCP41010(SPI接口)的8位数字电位器应用设计仿真

MCP41010是一款SPI接口的8位数字电位器。

zhusl6688的博客 558

python操作json_如何使用Python处理JSON数据

如何使用Python处理JSON数据?本篇文章就给大家介绍使用Python处理JSON数据的基本方法。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。在介绍使用Python处理JSON数据的基本方法之前,我们首先要了解一下什么是JSON?JSON代表“JavaScript Object Notation”,可以说是“基于JavaScript语言符号的数据格式”。但是,该表示法仅基于...

weixin_39614831的博客 173

RK3588 部署 YOLO26 目标检测:PT → ONNX → RKNN 全流程

YOLO26n 在 RK3588 上 INT8 量化后 NPU 推理约 15ms,系统 FPS 约 55,可以覆盖边缘端实时检测需求。模型从 PT 到 RKNN 的转换要用opset=11避免算子兼容问题。先用 YOLO26n + 640 输入跑通全链路,确认推理结果正确后再做性能调优。

m0_64661770的博客 304

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JSON 文件操作:Python 中最好的 JSON 数据持久化工具

Python 是如何通过内置json库操作 JSON 数据的

powerbiubiu的博客 2271

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

python操作json_利用Python进行数据分析——Python操作JSON格式的数据(五) | 学步园...

1、JSON(JavaScript Object Notation的简称)已经成为通过HTTP请求在Web浏览器和其他应用程序之间发送数据的标准格式之一。它是一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集。2、准备数据>>> obj = """... {"name":"Wes",... "plac...

weixin_39692271的博客 192

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Python数据操作—处理Json数据

JSON文件以可读的格式将数据存储为文本。 JSON代表JavaScript Object Notation。 使用read_json函数,Pandas可以读取JSON文件。 输入数据 通过将以下数据复制到文本编辑器(如记事本)来创建JSON文件。选择文件类型作为所有文件(.),使用.json扩展名保存文件,假设保存的文件名称为:input.json。 { "ID":["1","...

开开_王子的博客 3752

python操作json数据到mysql_如何使用Python将json数据写入到sqlite数据库

首先你的有sqlite的基础,能否建库,建表,插入数据,查询数据。好了,如何取json文件的数据呢?我是自己写的json文件,中间遇到很多坑,建议大家写完可以放www.bejson.com/在线JSON检验格式化工具下检测一下是否正确。{"data": [{"id": 11,"name": "litao","age": 21},{"id": 13,"name": "wangyang","age":...

weixin_39785814的博客 451

Python对JSON数据操作

在Python中,json模块提供了对JSON数据的增删改查及加载保存操作。加载数据可通过json.load()从文件读取或json.loads()从字符串解析;保存数据则使用json.dump()写入文件或json.dumps()生成字符串。

小白的博客 689

python抓取json数据_Python 读取 JSON 数据操作

读写 JSON 数据问题你想读写 JSON(JavaScript Object Notation) 编码格式的数据。解决方案json模块提供给了一种很简单的方式来编码和解码json数据,其中两个主要的函数时json.dumps()和 json.loads()下面演示如何将一个 Python 数据结构转换为 JSON:import jsondata = {'name' : 'ACME','share...

weixin_39605296的博客 718

【Python】文件操作:存储数据 —— json 模块

Python 中,json 模块可以用来处理 JSON 数据,它支持将 Python 数据结构(如字典、列表等)序列化为 JSON 格式字符串,也可以将 JSON 格式的字符串反序列化为 Python 数据结构。在 Python 中,json模块可以用来处理 JSON 数据,它支持将 Python 数据结构(如字典、列表等)序列化为 JSON 格式字符串,也可以将 JSON 格式的字符串反序列化为 Python 数据结构。以下是json。

Herbert 795
上一篇: 有了这个Python库,免费实现验证码识别!
下一篇: Jenkins自动化部署后端项目看这篇就够了
程序员可可
博客等级 码龄2年 3536粉丝 428原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值