玩转Python中的JSON:从基础到进阶

在Python中处理JSON数据是日常开发中的常见任务之一。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,在Web开发、数据存储等多个领域得到了广泛应用。本文将详细介绍如何在Python中处理JSON对象,包括基础操作、数据操作、高级操作、文件与目录操作、性能优化等内容,并通过具体的代码示例展示不同场景下的应用。

一、基础操作

1. 将Python对象转换为JSON字符串

在Python中,我们可以使用json模块将Python对象(如字典、列表等)转换为JSON格式字符串。此操作常用于将数据准备好传输到Web服务或保存为JSON文件。

import json
# Python字典
person = {'name': '刘杰','age': 29,'city': '上海'
}
# 将Python字典转换为JSON字符串
json_string = json.dumps(person, ensure_ascii=False)
print("Python对象转换为JSON字符串:")
print(json_string)

在这段代码中,我们将一个名为person的字典转换为JSON字符串。ensure_ascii=False确保了非ASCII字符(如中文)能够正常显示。

2. 将JSON字符串解析为Python对象

解析JSON字符串为Python对象是常见的操作,特别是在处理从Web接口或文件中获取的JSON数据时。

# JSON字符串
json_string = '{"name": "陈辉", "age": 34, "city": "北京"}'
# 将JSON字符串解析为Python字典
data = json.loads(json_string)
print("JSON字符串解析为Python对象:")
print(data)

这段代码展示了如何将JSON字符串转换为Python字典对象,方便后续处理。

3. 将Python对象写入JSON文件

将Python对象保存为JSON文件,通常用于数据存储或共享。

# Python字典
person = {'name': '孙洋','age': 25,'city': '成都'
}
# 将Python字典写入JSON文件
with open('person_data.json', 'w', encoding='utf-8') as f:json.dump(person, f, ensure_ascii=False)
print("已将Python对象写入JSON文件")

以上代码将一个字典写入到名为person_data.json的文件中。

4. 从JSON文件读取Python对象

读取存储在文件中的JSON数据,并将其解析为Python对象。

# 从JSON文件读取Python字典
with open('person_data.json', 'r', encoding='utf-8') as f:data = json.load(f)
print("已从JSON文件读取Python对象:")
print(data)

这段代码展示了如何读取一个JSON文件并将其解析为Python字典。

二、数据操作

5. 修改JSON文件中的数据

有时我们需要修改JSON文件中的数据。以下示例演示了如何读取文件、修改数据并将其写回文件。

# 从JSON文件读取Python字典
with open('person_data.json', 'r', encoding='utf-8') as f:data = json.load(f)
# 修改数据
data['age'] = 30
# 将修改后的数据写回JSON文件
with open('person_data.json', 'w', encoding='utf-8') as f:json.dump(data, f, ensure_ascii=False)
print("已修改JSON文件中的数据并保存")

6. 合并两个JSON文件

如果需要合并两个JSON文件的数据,可以先读取两个文件,然后将其内容合并,最后写入到一个新文件中。

# 读取第一个JSON文件
with open('file1.json', 'r', encoding='utf-8') as f:data1 = json.load(f)
# 读取第二个JSON文件
with open('file2.json', 'r', encoding='utf-8') as f:data2 = json.load(f)
# 合并两个字典
combined_data = {**data1, **data2}
# 将合并后的数据写入新的JSON文件
with open('combined_data.json', 'w', encoding='utf-8') as f:json.dump(combined_data, f, ensure_ascii=False)
print("已合并两个JSON文件并保存")

7. 添加新键值对

在现有的JSON数据中添加新的键值对。

# 从JSON文件读取Python字典
with open('person_data.json', 'r', encoding='utf-8') as f:data = json.load(f)
# 添加新键值对
data['job'] = '程序员'
# 将更新后的数据写回JSON文件
with open('person_data.json', 'w', encoding='utf-8') as f:json.dump(data, f, ensure_ascii=False)
print("已添加新键值对并保存")

8. 删除键值对

如果需要从JSON数据中删除某个键值对,可以使用del语句。

# 从JSON文件读取Python字典
with open('person_data.json', 'r', encoding='utf-8') as f:data = json.load(f)
# 删除键值对
del data['city']
# 将更新后的数据写回JSON文件
with open('person_data.json', 'w', encoding='utf-8') as f:json.dump(data, f, ensure_ascii=False)
print("已删除键值对并保存")

三、高级操作

9. 格式化输出JSON字符串

如果需要将JSON字符串以更易读的格式输出,可以使用indent参数来格式化输出。

# Python字典
person = {'name': '吴浩','age': 24,'city': '厦门'
}
# 格式化输出JSON字符串
json_string = json.dumps(person, indent=4, ensure_ascii=False)
print("格式化输出JSON字符串:")
print(json_string)

10. 处理嵌套JSON结构

在JSON中,嵌套结构非常常见。我们可以处理这样的结构并将其转换为JSON字符串。

# 嵌套的Python字典
nested_person = {'name': '赵强','details': {'age': 30,'city': '武汉'}
}
# 将嵌套的Python字典转换为JSON字符串
json_string = json.dumps(nested_person, ensure_ascii=False)
print("嵌套JSON结构转换为JSON字符串:")
print(json_string)

四、学后总结

在处理JSON数据时,Python的json模块提供了许多方便的功能,涵盖了从简单的对象转换到复杂嵌套结构的解析。通过本教程中的示例,你可以灵活地使用Python对JSON数据进行转换、存储、修改、合并等操作。

在处理json格式数据时要注意以下事项:

1. 在处理包含非ASCII字符(如中文)的JSON时,建议使用ensure_ascii=False,否则可能会遇到字符编码问题。

2. 当操作文件时,请确保文件路径正确,并在操作完成后及时关闭文件,避免文件损坏。

3. 在合并多个JSON文件时,确保数据结构一致,以避免数据覆盖或丢失。

4. 通过掌握这些技巧,你将能更高效地在Python项目中使用JSON数据进行各种操作。

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

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

相关文章

在Liunx中安装JDK、Tomcat、mysql、lrzsz、Nginx

一.软件安装方式 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 二.安装JDK 上述我们介绍了Linux系统软件安装的四种形式,接下来我们就通过第一种(二进制发 布包)形式来安装JDK。 在/下创建soft目录&…

神经网络基础-初识神经网络

人工神经网络( Artificial Neural Network, 简写为ANN)也简称为神经网络(NN),是一种模仿生物神经网络结构和功能的计算模型。人脑可以看做是一个生物神经网络,由众多的神经元连接而成。各个神经…

Python中PyTorch详解

文章目录 Python中PyTorch详解一、引言二、PyTorch核心概念1、张量(Tensor)1.1、创建张量1.2、张量操作 2、自动求导(Autograd)2.1、自动求导示例 三、构建神经网络1、使用nn模块2、优化器(Optimizer) 四、…

云服务器挖矿程序占用资源处理

云服务器挖矿程序占用资源处理 文章目录 云服务器挖矿程序占用资源处理top查看服务器后台运行情况关闭病毒删除病毒文件top 云服务器通过手机短信发送了多次预警,疑似出现挖矿程序,登录口令可能已经被暴力破解。处理方法是立即更改口令,然后处…

电脑文件夹打不开了,能打开但是会闪退,提示“找不到iUtils.dll”是什么原因?

电脑运行时常见问题解析:文件夹打不开、闪退及“找不到iUtils.dll”报错 在使用电脑的过程中,我们可能会遇到文件夹打不开、软件闪退或系统报错等问题,特别是提示“找不到iUtils.dll”的报错,更是让人困惑不已。今天我将为大家详…

【教程】让Jupyter支持打开CSV和Excel(xlsx)文件

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 支持CSV JupyterLab本身支持直接打开CSV文件,因此只需要在JupyterLab的文件浏览器中找到CSV文件并双击它,就可以在JupyterLab的…

自动驾驶域控制器简介

汽车智能驾驶功能持续高速渗透,带来智能驾驶域控制器市场空间快速增 长。智驾域控制器是智能驾驶决策环节的重要零部件,主要功能为处理感知 信息、进行规划决策等。其核心部件主要为计算芯片,英伟达、地平线等芯 片厂商市场地位突出。随着消费…

计算机网络-传输层 TCP协议(上)

目录 报头结构 TCP的可靠传输机制 核心机制一:确认应答 TCP的序号和确认序号 核心机制二:丢包重传 核心机制三:连接管理 建立连接-三次握手 断开连接-四次挥手 核心机制四:滑动窗口 数据包已经抵达, ACK被丢了 数据包就…

5.2章节python字符串的格式化三种方式

在Python中,格式化字符串是编程中常见的任务,它用于将变量或表达式的值嵌入到字符串中。以下是三种常见的格式化字符串的方式: 1.百分号(%)格式化: 这是Python早期版本中常用的字符串格式化方法。通过在字…

【经验分享】容器云运维的知识点

最近忙于备考没关注,有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源,但我以交流、交换为主,笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟,为了避免更多人花没必要的钱,所以决定公…

Spring Boot 集成 MyBatis 全面讲解

Spring Boot 集成 MyBatis 全面讲解 MyBatis 是一款优秀的持久层框架,与 Spring Boot 集成后可以大大简化开发流程。本文将全面讲解如何在 Spring Boot 中集成 MyBatis,包括环境配置、基础操作、高级功能和最佳实践。 一、MyBatis 简介 1. SqlSession …

Keil-MDK开发环境编译后axf自动转换bin格式文件

编译选项添加如下,调用fromelf工具自动完成转换: fromelf --bin -o "$LL.bin" "#L"

Python爬虫之Selenium的应用

【1】Selenium基础介绍 1.什么是selenium? (1)Selenium是一个用于Web应用程序测试的工具。 (2)Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。 (3)支持通过各种driv…

【超详细实战攻略】Jmeter逻辑控制器中if控制器、模块控制器、测试片段的使用方法

【超详细实战攻略】Jmeter逻辑控制器中if控制器、模块控制器、测试片段的使用方法 1 搭建测试对象1.1 禅道下载1.2 禅道安装1.3 运行禅道1.4 接口查看1.5 接口选择 2 Jmeter前置操作2.1 创建Jmeter线程组2.2 创建信息头管理器和请求默认值2.3 添加获取token接口2.4 添加监听器 …

8_Sass 颜色函数 --[CSS预处理]

Sass 提供了一系列的颜色函数,允许开发者在 CSS 中动态地创建和操作颜色。这些函数可以用于生成调色板、调整颜色的亮度或饱和度、混合颜色等,从而提高样式表的灵活性和可维护性。以下是 Sass 中一些常用的颜色函数及其用法示例: 1. adjust-…

工业大数据分析算法实战-day04

文章目录 day04统计分析概率分布参数估计假设检验 统计分布拟合1.基于核函数的非参数方法2. 单概率分布的参数化拟合3. 混合概率分布估计 线性回归模型1. OLS模型(普通最小二乘法)2. OLS模型检验3. 鲁棒线性回归4. 结构复杂度惩罚(正则化&…

vue3-tp8-Element:对话框实现

效果 参考框架 Dialog 对话框 | Element Plus 具体实现 一、建立view页面 /src/views/TestView.vue 二、将路径写入路由 /src/router/index.js import { createRouter, createWebHistory } from vue-router import HomeView from ../views/HomeView.vueconst router create…

VMware ESXi上创建Ubuntu虚拟机并实现远程SSH访问全攻略

文章目录 前言1. 在VMware ESXI中创建Ubuntu虚拟机2. Ubuntu开启SSH远程服务3. 安装Cpolar工具4. 使用SSH客户端远程访问Ubuntu5. 固定TCP公网地址 前言 本文主要介绍如何在VMware ESXi上创建一台Ubuntu 22.04虚拟机,并通过Cpolar内网穿透工具配置公网地址&#xf…

HQChart使用教程30-K线图如何对接第3方数据42-DRAWTEXTREL,DRAWTEXTABS数据结构

HQChart使用教程30-K线图如何对接第3方数据42-DRAWTEXTREL,DRAWTEXTABS数据结构 效果图DRAWTEXTREL示例数据结构说明nametypecolorDrawVAlignDrawAlignDrawDrawTypeDrawDataFont DRAWTEXTABS示例数据结构说明nametypecolorDrawVAlignDrawAlignDrawDrawTypeDrawDataFont 效果图 …

【电子元器件】电感基础知识

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、 电感的基本工作原理 1. 电感的基本工作原理如下: (1) 当线圈中有电流通过时&#…