软件测试|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处理功能使得在处理数据时更加便捷和高效。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ProtoBuf一些踩坑记录

一、Protobuf学习基础 学习的资料很多也很全,这里添加几个链接进行Protobuf的基础学习的链接,链接中的案例使用C编辑: 链接:Protobuf介绍及简单使用(上)_google_protobuf_version-CSDN博客 Protobuf介绍及简单使用(下&…

从网页连接socket服务器和I/O

1.i/o InputStream和InputStreamReader是Java I/O类库中的两个关键类,用于处理字节流。它们的主要区别在于它们处理数据的方式。 InputStream: InputStream是用于读取字节流的抽象类。它是所有字节输入流类的父类。InputStream的子类可以从不同的数据源读取字节&…

了解 Node.js 的运行机制:从事件循环到模块系统(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

typora导出html添加目录

typora导出html添加目录 使用方法 首先要从typora导出html文件,之后用记事本编辑器html文件 找到文档最后面,如图: 用文字编辑类工具打开sideBar.txt,复制其中所有内容【内容在下面】 在如上图的位置插入所复制的内容 打开修改…

面试宝典进阶之Java线程面试题

T1、【初级】线程和进程有什么区别? (1)线程是CPU调度的最小单位,进程是计算分配资源的最小单位。 (2)一个进程至少要有一个线程。 (3)进程之间的内存是隔离的,而同一个…

信息系统安全——基于 AFL 的模糊测试

实验 3 基于 AFL 的模糊测试 3.1 实验名称 《基于 AFL 的模糊测试》 3.2 实验目 1 、熟悉模糊测试方法 2 、熟悉模糊测试工具 AFL 的使用 3.3 实验步骤及内容 1 、 安装 AFL 2 、 任意选择一个有源代码的样本 这里采用教材上一个包含栈溢出漏洞的样本。 3 、 结合源代码分析用 …

8.云原生存储之Ceph集群

1. 私有云实战之基础环境搭建 2. 云原生实战之kubesphere搭建 3.云原生之kubesphere运维 4. 云原生之kubesphere基础服务搭建 5.云原生安全之kubesphere应用网关配置域名TLS证书 6.云原生之DevOps和CICD 7.云原生之jenkins集成SonarQube 8.云原生存储之Ceph集群 文章目录 为什么…

python 队列

队列常用方法 Python中的队列是一种数据结构,遵循先进先出(FIFO)的原则。在Python中,你可以使用内置模块queue提供的Queue类来实现队列数据结构。队列是一种常见的数据结构,用于按照特定顺序处理数据项,例…

x-cmd pkg | termsvg - 用于记录终端会话并导出为 SVG 图像的终端录制工具

目录 简介首次用户简单易用支持暂停录制兼容asciinema类似工具进一步阅读 简介 termsvg 是一款用 Go 编写命令行工具,可以用来录制终端操作和重新播放,而且可以导出录制文件为 svg 动画。其录制文件使用与 asciinema 相同的格式,因此您可以使…

【2024最新-python3小白零基础入门】No2.python基础语法

文章目录 1 编码2 标识符规则3 python保留字4 注释5 行与缩进6 多行语句7 数字(Number)类型8 字符串(String)9 空行10 等待用户输入11 同一行显示多条语句12 import 与 from...import 环境准备,打开pycharm,新建一个python文件 文件名称随便,可中文可英文…

ECMAScript6历史-前端开发+ECMAScript+基础语法+入门教程

ECMAScript6详解 ECMAScript 历史 我们首先来看 ECMA 是什么。ECMA,读音类似“埃科妈”,是欧洲计算机制造商协会(European Computer Manufacturers Association)的简称,是一家国际性会员制度的信息和电信标准组织。19…

ML:2-2neural network layer

文章目录 1. 神经网络层2. 更复杂的神经网络3. 神经网络的前向传播 【吴恩达机器学习笔记p47-49】 1. 神经网络层 input:4个数字的向量。3个神经元分别做logistic regression。下角标:标识第 i 个神经元的值。上角标:表示第 j 层layer的值。…

JAVA面向对象基础-容器

一、泛型 我们可以在类的声明处增加泛型列表&#xff0c;如&#xff1a;<T,E,V>。 此处&#xff0c;字符可以是任何标识符&#xff0c;一般采用这3个字母。 【示例9-1】泛型类的声明 1 2 3 4 5 6 7 8 9 10 class MyCollection<E> {// E:表示泛型; Object[] o…

使用 Apache PDFBox 操作PDF文件

简介 Apache PDFBox库是一个开源的Java工具&#xff0c;专门用于处理PDF文档。它允许用户创建全新的PDF文件&#xff0c;编辑现有的PDF文档&#xff0c;以及从PDF文件中提取内容。此外&#xff0c;Apache PDFBox还提供了一些命令行实用工具。 Apache PDFBox提供了创建、渲染、…

HarmonyOS应用开发学习笔记 应用上下文Context 获取文件夹路径

1、 HarmoryOS Ability页面的生命周期 2、 Component自定义组件 3、HarmonyOS 应用开发学习笔记 ets组件生命周期 4、HarmonyOS 应用开发学习笔记 ets组件样式定义 Styles装饰器&#xff1a;定义组件重用样式 Extend装饰器&#xff1a;定义扩展组件样式 5、HarmonyOS 应用开发…

高效构建Java应用:Maven入门和进阶(三)

高效构建Java应用&#xff1a;Maven入门和进阶&#xff08;三&#xff09; 三. Maven的核心功能和构建管理3.1 依赖管理和配置3.2 依赖传递和冲突3.3 依赖导入失败场景和解决方案3.4 扩展构建管理和插件配置 三. Maven的核心功能和构建管理 3.1 依赖管理和配置 Maven 依赖管理…

CAN位时序分解

标准位时序 CAN标准位时序描述如下表 段名称段的作用Tq数同步段 (SS: Synchronization Segment)用于多个连接在总线上的单元通过此段实现时序调整&#xff0c;同步进行接收和发送的工作。信号的跳变边沿最好出现在此段中。 若通讯节点检测到总线上信号的跳变沿被包含在 SS 段的…

C# OpenCvSharp DNN FreeYOLO 人脸检测人脸图像质量评估

目录 效果 模型信息 yolo_free_huge_widerface_192x320.onnx face-quality-assessment.onnx 项目 代码 frmMain.cs FreeYoloFace FaceQualityAssessment.cs 下载 C# OpenCvSharp DNN FreeYOLO 人脸检测&人脸图像质量评估 效果 模型信息 yolo_free_huge_widerfa…

Java高级流

高级流 流连接示意图 缓冲流 java.io.BufferedOutputStream和BufferedInputStream. 缓冲流是一对高级流,作用是提高读写数据的效率. 缓冲流内部有一个字节数组,默认长度是8K.缓冲流读写数据时一定是将数据的读写方式转换为块读写来保证读写效率. 使用缓冲流完成文件复制操…

dubbo使用的三种配置

一. 准备注册中心 dubbo的注册中心在生产环境中&#xff0c;一般都会选择 ZooKeeper 下载 ZooKeeper ZooKeeper_3.4.14下载地址启动ZK # 解压安装包 tar -zxvf zookeeper-3.4.14.tar.gz# 进入安装目录&#xff0c; cp conf/zoo_sample.cfg conf/zoo.cfg# 启动ZK ./bin/zkServ…