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

news2024/9/22 5:24:10

简介

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.coloradmin.cn/o/1369545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

通过Docker搭建4节点的Tendermint集群

Tendermint:0.34.24 Docker:20.10.21 Docker-Compose:2.20.2 OS:Ubuntu 20.04 Go:1.19.2 Linux/amd64 1 修改Tendermint源码 1.1 修改监听IP 为什么要将127.0.1修改成0.0.0.0呢?因为容器内的服务如果是以…

springboot学习笔记(杂)

springboot学习笔记 1.注解框架学习 2.各个类之间的继承和实现关系3.理解面向对象的思想(其实这个想写在2中的)4.开发常用工具Lombok4.0说在前面(如何快速使用Lombok)4.1了解Lombok4.2Lombok的作用一:减少代码冗余4.3Lombok的作用二:方便打日志4.4Lombok使用方法(各个注解作用)…

Linux shell jq工具操作文档(jq --help使用示例)

文章目录 jq工具介绍jq --help解读英文中文 使用示例1. 使用最简单的过滤器。将输入复制到输出,不做任何修改(除了格式化)2. 使用 -c 选项进行紧凑输出而非美化输出3. 使用 -n 选项以 null 作为单一输入值(用于创建新json&#xf…

JS逆向之无限debugger对抗

文章目录 JS中实现debugger的方法无限Debugger示例Demo1Demo2Demo3Demo4总结 无限Debugger实战 JS中实现debugger的方法 首先,我们要知道,在浏览器实现debugger的方法有哪些 debugger关键词 ,相当于C内联汇编的int3,在代码中嵌入…

进阶学习——Linux网络

目录 一、网络配置命令 1.ifconfig——IP地址 1.1ifconfig的基础用法 1.1.1ifconfig命令详解 1.2常用格式 1.3修改网卡名称 1.3.1临时修改 1.3.2永久修改 1.4临时修改网卡 1.4.1设置虚拟网卡 1.4.2延伸——ethtool 1.5永久修改网卡 1.6实验 —— 双网卡配置 1.…

C++ Primer 第五版 中文版 阅读笔记 + 个人思考

C Primer 第五版 中文版 阅读笔记 个人思考 第 10 章 泛型算法10.1 概述练习10.1练习10.2 第 10 章 泛型算法 泛型的体现:容器类型(包括内置数组),元素类型,元素操作方法。 顺序容器定义的操作:insert&a…

计算机丢失mfc140.dll怎么办?解决mfc140.dll缺失的3种方法分享

计算机丢失mfc140.dll怎么办?在使用微软办公软件的时候,可能会弹出一个错误提示框说“找不到mfc140.dll,无法继续执行代码”。为了不影响工作效率,我们可能需要亲自动手尝试修复这一问题。以下是一些mfc140.dll缺失的3种方法相关介…

鸿蒙开发DevEco Studio搭建

DevEco Studio 安装 DevEco Studio 编辑器 下载:https://developer.harmonyos.com/cn/develop/deveco-studio#download Windows(64-bit)Mac(X86)Mac(ARM) 安装:DevEco Studio → 一路 Next运行: 基础安装:Node.js > 16.9.1…

powerdesigner导出sql将name放到comment注释上

1. 批量设置 2. 脚本 Option Explicit ValidationMode True InteractiveMode im_Batch Dim mdl the current modelget the current active model Set mdl ActiveModel If (mdl Is Nothing) ThenMsgBox"There is no current Model " ElseIf Not mdl.IsKindOf(PdPD…

数据结构-函数题

6-2.求二叉树的高度 本题要求给定二叉树的高度。 函数接口定义: int GetHeight( BinTree BT ); typedef struct TNode *Position; typedef Position BinTree; struct TNode{ElementType Data;BinTree Left;BinTree Right; }; 要求函数返回给定二叉树BT的高度值…

Tomcat源码解析(一): Tomcat整体架构

Tomcat源码系列文章 Tomcat源码解析(一): Tomcat整体架构 目录 一、Tomcat整体架构1、Tomcat两个核心组件功能2、Tomcat支持的多种I/O模型和应用层协议 二、Connector连接器1、连接器功能汇总2、ProtocolHandler组件2.1、Endpoint2.2、Processor 3、Adapter组件 三…

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

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

MySQL之导入、导出

文章目录 1.navicat导入导出2.mysqldump命令导入导出2.1导出2.2导入 3.load data infile命令导入导出4.远程备份5.思维导图 1.navicat导入导出 使用Navicat工具导入t_log 共耗时 55s 2.mysqldump命令导入导出 2.1导出 导出表数据和表结构 语法: mysqldump -u用…

sentinel入门,转载的,不记得在哪复制的了

sentinel 基本概念 开发的原因,需要对吞吐量(TPS)、QPS、并发数、响应时间(RT)几个概念做下了解,查自百度百科,记录如下: 响应时间(RT)   响应时间是指系统对请求作出响应的时间。…

网工内推 | 运维工程师,国企、上市公司,RHCE认证优先

01 广东机场白云信息科技股份有限公司 招聘岗位:基础架构运维工程师(中级) 职责描述: 1、参与公司业务系统的监控、巡检、维护、故障定位、原因分析; 2、负责业务系统的上线、升级割接工作; 3、负责服务器…

kubectlkubeletrancherhelmkubeadm这几个命令行工具是什么关系?

背景 在最近学习k8s的过程中,发现kubectl&kubelet&rancher&helm&kubeadm这几个命令怎么在交错使用,他们究竟是什么关系?他们分别应该在什么情况下使用呢?这里我进行了简单的总结,做个区分。 各工具说…

HarmonyOS 应用开发学习笔记 ets组件生命周期

HarmoryOS Ability页面的生命周期 Component自定义组件 ets组件生命周期官放文档 本文讲解 ets组件的生命周期,在此之前大家可以先去了解Ability的生命周期,这两个生命周期有有一定的关联性 在开始之前,我们先明确自定义组件和页面的关系&…

互斥、自旋、读写锁的应用场景

互斥、自旋、读写锁的应用场景 锁🔒1、互斥锁、自旋锁2、读写锁:读写的优先级3、乐观锁和悲观锁总结: 锁🔒 ​ 多线程访问共享资源的生活,避免不了资源竞争而导致错乱的问题,所以我们通常为了解决这一问题…

YOLO物体检测-系列教程6:YOLOv5源码解析1

计算机视觉 全教程 目录 物体检测 系列教程 总目录 1、基本概述 YOLOv5没有一篇对应的论文,是一个对v4更好的实现v5版本是一个在github更新的基于工程项目的实现基本上和v4没有差异,只不过在整个项目上做出了更好的实现效果主要基于github的文档介绍来…

Selenium 学习(0.19)——软件测试之基本路径测试法——拓展案例

1、案例 请使用基本路径法为变量year设计测试用例&#xff0c;year的取值范围是1000<year<2001。代码如下&#xff1a; 2、步骤 先画控制流程图 再转化为控制流图&#xff08;标出节点&#xff09; V(G) 总区域数 4 V(G) E - N 2 (边数 - 节点数 2…