软件测试|Python对JSON的解析和创建详解

简介

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

JSON的基本结构

JSON由键值对组成,使用大括号{}表示对象,使用中括号[]表示数组。它支持的数据类型包括字符串、数字、布尔值、数组、对象和null。下面是一个简单的JSON示例:

{"name": "John Doe","age": 30,"is_student": false,"hobbies": ["reading", "hiking", "swimming"],"address": {"city": "New York","zipcode": "10001"},"email": null
}

解析JSON

Python提供了json模块来处理JSON数据。使用json.loads()函数可以将JSON字符串解析为Python对象(字典或列表)。以下是解析JSON的基本步骤:

  1. 导入json模块。
  2. 使用json.loads()函数将JSON字符串解析为Python对象。

下面是一个解析JSON的示例代码:

import json# JSON字符串
json_string = '{"name": "John Doe", "age": 30, "is_student": false}'# 解析JSON
data = json.loads(json_string)# 打印解析后的数据
print(data)  # 输出:{'name': 'John Doe', 'age': 30, 'is_student': False}

创建JSON

在Python中,可以使用json.dumps()函数将Python对象(字典或列表)转换为JSON格式的字符串。以下是创建JSON的基本步骤:

  1. 导入json模块。
  2. 创建一个Python对象(字典或列表)。
  3. 使用json.dumps()函数将Python对象转换为JSON字符串。

下面是一个创建JSON的示例代码:

import json# 创建一个Python字典
data = {"name": "John Doe","age": 30,"is_student": False,"hobbies": ["reading", "hiking", "swimming"]
}# 将Python字典转换为JSON字符串
json_string = json.dumps(data)# 打印JSON字符串
print(json_string)  # 输出:{"name": "John Doe", "age": 30, "is_student": false, "hobbies": ["reading", "hiking", "swimming"]}

格式化输出JSON

在上面的示例中,生成的JSON字符串是紧凑的,没有换行或缩进。如果您希望以更可读的方式输出JSON,可以使用indent参数来进行格式化输出。indent参数指定了缩进的空格数。

下面是一个格式化输出JSON的示例代码:

import json# 创建一个Python字典
data = {"name": "John Doe","age": 30,"is_student": False,"hobbies": ["reading", "hiking", "swimming"]
}# 将Python字典转换为JSON字符串并进行格式化输出
json_string = json.dumps(data, indent=2)# 打印格式化后的JSON字符串
print(json_string)

输出结果如下:

{"name": "John Doe","age": 30,"is_student": false,"hobbies": ["reading","hiking","swimming"]
}

处理文件中的JSON数据

通常,在实际应用中,JSON数据可能存储在文件中。Python提供了方便的方法来读取JSON文件并将其解析为Python对象,以及将Python对象转换为JSON并写入到文件中。

读取JSON文件:

import json# 从文件中读取JSON数据
with open('data.json') as f:data = json.load(f)# 打印解析后的数据
print(data)

写入JSON文件:

import json# 创建一个Python字典
data = {"name": "John Doe","age": 30,"is_student": False,"hobbies": ["reading", "hiking", "swimming"]
}# 将Python字典写入JSON文件
with open('data.json', 'w') as f:json.dump(data, f)

处理包含JSON的API响应

在实际开发中,我们经常与API进行交互,并获取返回的JSON数据。Python中的requests库可以用于发送HTTP请求,并处理API响应中的JSON数据。

以下是一个使用requests库获取API响应并解析JSON的示例代码:

import requests
import json# 发送GET请求
response = requests.get('https://api.example.com/data')# 解析JSON响应
data = response.json()# 打印解析后的数据
print(data)

总结

Python对JSON的解析和创建非常简单。json模块提供了loads()函数用于解析JSON字符串,dumps()函数用于将Python对象转换为JSON字符串。使用这些函数,我们可以轻松地在Python中处理JSON数据,与API进行交互,读写JSON文件等。JSON是一种通用的数据交换格式,在现代应用中广泛使用,Python的JSON处理功能使得在处理数据时更加便捷和高效。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/234172.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GB28181视频汇聚平台EasyCVR级联后,部分通道视频无法播放是什么原因?

GB28181协议智慧安防平台EasyCVR是基于各种IP流媒体协议传输的视频汇聚和融合管理平台。视频流媒体服务器EasyCVR采用了开放式的网络结构,支持高清视频的接入和传输、分发,平台提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制…

Python 网络爬虫的常用库汇总(建议收藏)

Python 在编写网络爬虫常常用到的一些库。 Python爬虫网络库主要包括:urllib、requests、lxml、fake-useragent、bs4(BeautifulSoup)、grab、pycurl、urllib3、httplib2、RoboBrowser 、MechanicalSoup、mechanize、socket、Unirest for Python、hyper、PySocks、t…

Spring MVC的RequestMapping注解、controller方法返回值

1.使用说明 作用:用于建立请求URL和处理请求方法之间的对应关系。 出现位置: 类上: 请求 URL的第一级访问目录。此处不写的话,就相当于应用的根目录。写的话需要以/开头。它出现的目的是为了使我们的 URL 可以按照模块化管理&…

Realm Management Extension领域管理扩展之安全状态

RME基于Arm TrustZone技术。TrustZone技术在Armv6中引入,提供以下两个安全状态: 安全状态(Secure state)非安全状态(Non-secure state)以下图表显示了在AArch64中的这两个安全状态以及通常在每个安全状态中找到的软件组件: 该架构将在安全状态运行的软件与在非安全状态运…

UV贴图和展开初学者指南

在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 介绍 这正是本文的主题——UV贴图——登上舞台的时候。大多数 3D 建…

Transformer 的双向编码器表示 (BERT)

一、说明 本文介绍语言句法中,最可能的单词填空在self-attention的表现形式,以及内部原理的介绍。 二、关于本文概述 在我之前的博客中,我们研究了关于生成式预训练 Transformer 的完整概述,关于生成式预训练 Transformer (GPT) 的…

基于神经网络的手写汉字提取与书写评分系统研究

相关源码和文档获取请私聊QQ:3106089953 论文目录结构 目 录 摘 要 I Abstract II 目 录 IV 第1章 绪论 1 1.1. 研究背景与意义 1 1.2. 国内外研究现状 2 1.2.1. 文本定位技术研究现状 2 1.2.2. 手写汉字识别研究现状 3 1.2.3. 汉字书写质量评价方法研究现状 4 1.3. 本文所做工…

Qt pro文件

1. 项目通常结构 2.pri文件 pri文件可定义通用的宏,例如创建一个COMMON.pri文件内容为 COMMON_PATH D:\MyData 然后其它pri或者pro文件如APPTemplate.pro文件中通过添加include(Common.pri) ,QtCreator就会自动在项目结构树里面创建对应的节点 3.变量…

3D人体姿态估计

3D人体姿态估计是指通过算法对输入的图像或视频进行分析,推断出人体的三维姿态信息。该技术可以应用于许多领域,如虚拟现实、运动分析、人机交互等。 1. 算法原理: 3D人体姿态估计利用深度学习模型作为算法的核心,通过网络学习人…

【web】springboot3 生成本地文件 url

文章目录 流程效果静态资源访问ServiceServiceImplController 流程 avatar_dir:请求图片在服务端的存放路径user.dir:项目根目录 效果 静态资源访问 application.yml 设置静态文件存储路径custom:upload:avatar_dir: ${user.dir}/avatar_dir/avatar_d…

GO语言笔记2-变量与基本数据类型

变量使用步骤 声明赋值使用 package main import "fmt" func main(){var age int //声明一个 int类型的变量叫ageage 18 //给变量用 赋值fmt.Println(age) //使用变量 输出变量的值 } 编译运行输出变量值 变量的四种使用方式 package main import "fmt&q…

金和OA C6 HomeService.asmx SQL注入漏洞复现

0x01 产品简介 金和网络是专业信息化服务商,为城市监管部门提供了互联网+监管解决方案,为企事业单位提供组织协同OA系统开发平台,电子政务一体化平台,智慧电商平台等服务。 0x02 漏洞概述 金和OA C6 HomeService.asmx接口处存在SQL注入漏洞,攻击者除了可以利用 SQL 注入漏洞…

MiniTab的正态性检验结果的分析

正态性检验概述 可使用 正态性检验 确定数据是否不服从正态分布。 执行菜单:要执行正态性检验,请选择统计 > 基本统计 > 正态性检验。 正态性检验 的假设 对于正态性检验,进行如下假设。 H0:数据服从正态分布。H1&…

【VUE】无法加载文件 \node\vue.ps1,因为在此系统上禁止运行脚本。问题解决

问题描述 在VS Code中输入vue create -p dcloudio/uni-preset-vue uniapp-demo命令时报错 无法加载文件 D:\address\node\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Executi…

数据结构之B树和B+树

数据结构可视化演示链接,也就是视频中的网址 文章目录 一、B-Tree二、BTree(B-Tree变种) 一、B-Tree 样例图 叶节点具有相同的深度,叶节点的指针为空所有索引元素不重复节点中的数据索引从左到右递增排列 二、BTree(B-Tree变种) 样例图 非叶子节…

水文模型(科普类)

SWMM 模型概况: SWMM5 系列拥有编辑区域数据的功能,而且能模拟水文、 水力和水质。其核心部分是管道汇流计算模块,提供了恒定流法、运动波法和动力波法三种水动力学 方法。其中动力波法通过求解完整的圣维南方 程组进行计算,能够…

【代码随想录】刷题笔记Day48

前言 早上练车去了(好久没有8点前醒了),练科目二两小时下来脚根可真酸啊,希望下周一把过。练完顺带去Apple西湖免费换新了耳机,羊毛爽! 121. 买卖股票的最佳时机 - 力扣(LeetCode)…

三分钟轻松搞懂 HashMap 死循环问题!

三分钟轻松搞懂 HashMap 死循环问题! HashMap 死循环发生在 JDK 1.7 版本中,形成死循环的原因是 HashMap 在 JDK 1.7 使用的是头插法,头插法 链表 多线程并发 HashMap 扩容,这几个点加在一起就形成了 HashMap 的死循环。 前置…

考虑柔性负荷的综合能源系统低碳经济优化调度【复现】

随着低碳发展进程的不断推进,综合能源系统(IES)逐渐成为实现减排目标的重要支撑技术。 基于能 源集线器概念,结合需求侧柔性负荷的可平移、可转移、可削减特性,构建了含风光储、燃气轮机、柔性负荷等 在内的 IES 模型。…

Java中SpringBoot组件集成接入【MQTT中间件】

Java中SpringBoot组件集成接入【MQTT中间件】 1.MQTT介绍2.搭建MQTT服务器1.Windows2.Ubuntu3.Docker4.其他方式3.mqtt可视化客户端MQTTX及快速使用教程4.SpringBoot接入MQTT1、maven依赖2、MQTT配置3、MQTT组件具体代码1.定义通道名字2.消息发布器3.MQTT配置、生产者、消费者4…