JSON及Python操作JSON相关
JSON及Python操作JSON相关
Json简介及Python操作Json相关示例。
1. JSON概念及支持的数据类型
1.1 什么是 JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。尽管 JSON 源于 JavaScript,它与编程语言无关,目前被广泛应用于各种编程语言中。
1.2 JSON 支持的数据类型
JSON 支持以下几种基本数据类型:
- 两种特殊类型:数组(array)、对象(object)
- 四种基础类型:字符串(string)、数字(number)、布尔型(boolean)、NULL值
- 对象(Object)
- 表示为一组无序的键值对集合,用花括号
{}
包裹。 - 键必须是字符串,并且用双引号包裹。
- 每个键值对之间用逗号
,
分隔。 - 键和值之间用冒号
:
分隔。
示例:
{"name": "John","age": 30,"isStudent": false,"address": {"city": "New York","zip": "10001"}
}
- 数组(Array)
- 表示为一个有序的值集合,用方括号
[]
包裹。 - 各个值之间用逗号
,
分隔。
示例:
["apple","banana","cherry"
]
json对象和字符串区别:
特性 | JSON 对象 | JSON 数组 |
---|---|---|
表示 | 花括号 {} 包裹 | 方括号 [] 包裹 |
数据形式 | 无序的键值对集合 | 有序的值的集合 |
键 | 字符串(用双引号包裹) | 无键,只有索引 |
值 | 可以是任何JSON数据类型 | 可以是任何JSON数据类型 |
使用场景 | 表示复杂结构化数据 | 表示有序列表数据 |
- 字符串(String)
- 表示为一串字符序列,用双引号
"
包裹。 - 可以包含转义字符,例如
\"
表示双引号,\\
表示反斜杠,\n
表示换行符等。
示例:
"Hello, world!"
- 数字(Number)
- 表示为整数或浮点数。
- 可以是正数、负数,或零。
示例:
42
3.14
- 布尔值(Boolean)
表示为 true
或 false
。
示例:
true
false
- 空值(Null)
表示为空值,使用 null
。
示例:
null
2. 示例代码
2.1 读取JSON文件
在Python中,你可以使用json
模块读取JSON文件。这是最常见的操作。
import json# 读取JSON文件
with open('data.json', 'r', encoding='utf-8') as file:data = json.load(file) # 读取并解析JSON数据# 打印数据
print(data)
这里我们使用json.load()
读取并解析JSON文件,并将结果存储在data
变量中。
2.2 写入JSON文件
你可以使用json.dump()
将Python数据结构写入JSON文件。
import json# 要写入的Python数据
data = {"name": "Alice","age": 30,"skills": ["Python", "Data Analysis", "Machine Learning"]
}# 写入到JSON文件
with open('output.json', 'w', encoding='utf-8') as file:json.dump(data, file, indent=4) # 使用缩进格式化输出
这个示例使用json.dump()
将字典写入JSON文件。
2.3 解析JSON字符串
有时数据可能以JSON字符串的形式存在。这时你可以使用json.loads()
来解析它。
import json# 一个JSON字符串
json_str = '{"name": "Bob", "age": 25, "city": "New York"}'# 解析JSON字符串
data = json.loads(json_str)print(data) # {'name': 'Bob', 'age': 25, 'city': 'New York'}
2.4 将Python数据转换为JSON字符串
与解析JSON字符串类似,你可以使用json.dumps()
将Python数据转换为JSON字符串。
import json# 一个Python数据结构
data = {"name": "Charlie","hobbies": ["Reading", "Swimming", "Hiking"]
}# 将Python数据转换为JSON字符串
json_str = json.dumps(data, indent=4)print(json_str) # JSON格式的字符串
2.5 处理复杂JSON数据
JSON数据可以包含嵌套的结构。Python可以方便地处理这些复杂数据。
import json# 一个包含嵌套结构的JSON
nested_json = {"name": "Dave","age": 40,"children": [{"name": "Amy", "age": 10},{"name": "Ben", "age": 8}],"contact": {"email": "dave@example.com","phone": "+1234567890"}
}# 将Python数据转换为JSON字符串
json_str = json.dumps(nested_json, indent=4)print(json_str)
在这个示例中,我们创建了一个包含嵌套结构的Python数据,然后将其转换为JSON字符串以进行输出。
3. 总结
3.1 json模块中load、loads、dump、dumps函数的区别总结
函数 | 描述 | 参数 | 返回值 | 用途 |
---|---|---|---|---|
load | 从文件读取JSON数据,并转换为Python对象 | - file object: 包含JSON数据的文件对象 | Python对象 | 从文件中读取并解析JSON数据 |
loads | 从字符串读取JSON数据,并转换为Python对象 | - str: JSON格式的字符串 | Python对象 | 从字符串中读取并解析JSON数据 |
dump | 将Python对象编码为JSON数据并写入文件 | - obj: Python对象 - file object: 文件对象 | 无 | 将Python对象写入文件中 |
dumps | 将Python对象编码为JSON格式的字符串 | - obj: Python对象 | JSON格式的字符串 | 将Python对象转换为JSON字符串 |
3.2 JSON类型与Python类型的对照表
JSON 类型 | Python 类型 | 示例 |
---|---|---|
object | dict | {"name": "John", "age": 30} -> {'name': 'John', 'age': 30} |
array | list | [1, 2, 3] -> [1, 2, 3] |
string | str | "hello" -> 'hello' |
number | int 或 float | 42 -> 42 3.14 -> 3.14 |
true | True | true -> True |
false | False | false -> False |
null | None | null -> None |
3.3 区分Python字典和JSON格式的字符串
1. 语法上区分
- Python 字典: 是一种内存中的数据结构,包含键值对,键可以是任何不可变的数据类型,值可以是任意数据类型。
- JSON: 是一种用于数据交换的字符串格式,键和值都必须是特定类型(键必须是字符串,值可以是字符串、数字、数组、对象、布尔值或 null)。
2. JSON和 Python 字典的使用场景
- Python 字典:用于在 Python 程序内部处理数据。
- JSON 字符串:用于在不同系统之间交换数据(例如,前后端通信、数据存储等)。
相关文章:
JSON及Python操作JSON相关
JSON及Python操作JSON相关 Json简介及Python操作Json相关示例。 1. JSON概念及支持的数据类型 1.1 什么是 JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解…...
[ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)
🏡作者主页:点击! 🤖网络通信基础TCP/IP专栏:点击! ⏰️创作时间:2024年6月8日14点23分 🀄️文章质量:94分 前言—— 在现代通信网络中,传输介质是数据传…...
Android 高德地图API(新版)
新版高德地图 前言正文一、创建应用① 获取PackageName② 获取调试版安全码SHA1③ 获取发布版安全码SHA1 二、配置项目① 导入SDK② 配置AndroidManifest.xml 三、获取当前定位信息① ViewBinding使用和导包② 隐私合规设置③ 权限请求④ 初始化定位⑤ 获取定位信息 四、显示地…...
LeetCode---二叉树
144/94/145. 二叉树的前、中、后序的递归遍历 以中序遍历为例,其余类似: 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 代码示例: /*** Definition for a binary tree node.* struct TreeNode {* int val;* Tr…...
从0开发一个Chrome插件:核心功能开发——弹出页面
前言 这是《从0开发一个Chrome插件》系列的第十一篇文章,本系列教你如何从0去开发一个Chrome插件,每篇文章都会好好打磨,写清楚我在开发过程遇到的问题,还有开发经验和技巧。 专栏: 从0开发一个Chrome插件:什么是Chrome插件?从0开发一个Chrome插件:开发Chrome插件的必…...
AIGC笔记--Stable Diffusion源码剖析之UNetModel
1--前言 以论文《High-Resolution Image Synthesis with Latent Diffusion Models》 开源的项目为例,剖析Stable Diffusion经典组成部分,巩固学习加深印象。 2--UNetModel 一个可以debug的小demo:SD_UNet 以文生图为例&#…...
Linux文件系统与日志分析
目录 inode block 链接 文件修复 实验步骤 针对ext文件系统恢复删除文件 针对xfs文件系统恢复删除文件 日志 日志级别 rsyslogd服务 日志目录 messages日志文件(系统日志) 集中管理日志 - 实验 1.环境配置 1.1 1.2 1.3 1.4 1.5 2.远…...
【SkyWalking】使用PostgreSQL做存储K8s部署
拉取镜像 docker pull apache/skywalking-ui:10.0.1 docker tag apache/skywalking-ui:10.0.1 xxx/xxx/skywalking-ui:10.0.1 docker push xxx/xxx/skywalking-ui:10.0.1docker pull apache/skywalking-oap-server:10.0.1 docker tag apache/skywalking-oap-server:10.0.1 xxx…...
详解大模型微调数据集构建方法(持续更新)
大家好,我是herosunly。985院校硕士毕业,现担任算法t研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算…...
自制植物大战僵尸:HTML5与JavaScript实现的简单游戏
引言 在本文中,我们将一起探索如何使用HTML5和JavaScript来创建一个简单的植物大战僵尸游戏。这不仅是一项有趣的编程挑战,也是学习游戏开发基础的绝佳机会。 什么是植物大战僵尸? 植物大战僵尸是一款流行的策略塔防游戏,玩家需…...
Istio_1.17.8安装
项目背景 按照istio官网的命令一路安装下来,安装好的istio版本为目前的最新版本,1.22.0。而我的k8s集群的版本并不支持istio_1.22的版本,导致ingress-gate网关安装不上,再仔细查看istio的发布文档,如果用istio_1.22版本…...
[数据集][目标检测]室内积水检测数据集VOC+YOLO格式761张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):761 标注数量(xml文件个数):761 标注数量(txt文件个数):761 标注类别…...
17_Vue高级监听器生命周期Vue组件组件通信
文章目录 1. 数据监听器watch2. Vue生命周期3. Vue组件4. Vue组件通信Appendix 1. 数据监听器watch 首先watch需要单独引 import {watch} from vuewatch函数监听ref响应式数据 watch(监听的内容,监听行为)监听行为默认为(newValue,oldValue) let firstname ref…...
【ROS使用记录】—— ros使用过程中的rosbag录制播放和ros话题信息相关的指令与操作记录
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、rosbag的介绍二、rosbag的在线和离线录制三、rosbag的播放相关的指令四、其他rosbag和ros话题相关的指令总结 前言 rosbag是ROS(机器人操作系统…...
Laravel 富文本内容
Laravel 获取富文本的纯文本内容-CSDN博客 Laravel 富文本内容里面的图片添加前缀URL-CSDN博客 Laravel 富文本图片的style样式删除-CSDN博客. Laravel 获取富文本中的所有图片-CSDN博客 富文本字体font-famly删除 $data preg_replace(/(<[^>])style["\][^"…...
Spark Python环境搭建与优化:深入剖析四个方面、五个方面、六个方面及七个关键要点
Spark Python环境搭建与优化:深入剖析四个方面、五个方面、六个方面及七个关键要点 在大数据处理领域,Apache Spark凭借其出色的性能和灵活性备受瞩目。而要在Python中利用Spark的强大功能,首先需要搭建一个稳定且高效的Spark Python环境。本…...
【微信小程序开发】小程序中的上滑加载更多,下拉刷新是如何实现的?
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
从 Android 恢复已删除的备份录
本文介绍了几种在 Android 上恢复丢失和删除的短信的方法。这些方法都不能保证一定成功,但您可能能够恢复一些短信或其中存储的文件。 首先要尝试什么 首先,尝试保留数据。如果你刚刚删除了信息,请立即将手机置于飞行模式,方法是…...
如何使用Python中的random模块生成随机数
在Python中,random模块提供了多种用于生成随机数的函数。以下是一些基本示例: 生成随机整数: 使用random.randint(a, b)函数生成一个介于a和b之间的随机整数(包括a和b)。 python复制代码 import random random_int …...
AI大数据处理与分析实战--体育问卷分析
AI大数据处理与分析实战–体育问卷分析 前言:前一段时间接了一个需求,使用AI进行数据分析与处理,遂整理了一下大致过程和大致简要结果(更详细就不方便放了)。 文章目录 AI大数据处理与分析实战--体育问卷分析一、数据…...
C++第二十五弹---从零开始模拟STL中的list(下)
✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、函数补充 2、迭代器完善 3、const迭代器 总结 1、函数补充 拷贝构造 思路: 先构造一个头结点,然后将 lt 类中的元…...
STM32/keil把多个c文件编译为静态库lib
把常用的、不经常修改的代码库编译成lib以后,可以加快整个工程的编译速度。 一个常见的应用场景就是,把ST的标准库或HAL库等编译成lib,这样以后再编译整个工程时,就无需再次编译他们了,可以节省编译时间。当然&#x…...
L45---506.相对名次(java)--排序
1.题目描述 2.知识点 (1)String.join(" ", words) 是 Java 中的一个语法,用于将数组或集合中的元素连接成一个单独的字符串,连接时使用指定的分隔符。这里的 " " 是作为分隔符使用的一个空格字符串。 Strin…...
跨网段路由
跨网段路由通常是指在网络中配置路由,以允许不同子网之间的通信。要设置跨网段的永久路由,取决于你是在操作路由器、交换机这样的网络设备,还是在配置个人计算机(如Windows或Linux系统)。下面是两种常见情况下的简要指…...
HO-3D 数据集
// 由于非刚体的追踪比较困难,所以看看刚体数据集 HOnnotate: A method for 3D Annotation of Hand and Object Poses // cvpr20https://arxiv.org/abs/1907.01481 https://github.com/shreyashampali/ho3d https://paperswithcode.com/paper/ho-3d-a-mult…...
Elasticsearch 认证模拟题 - 8
一、题目 在集群中输入以下指令: PUT phones/_doc/1 {"brand":"Samsumg","model":"Galaxy S9","features":[{"type":"os", "value":"Android"},{"type":&q…...
【Postman接口测试】第四节.Postman接口测试项目实战(中)
文章目录 前言五、Postman断言 5.1 Postman断言介绍 5.2 响应状态码断言 5.3 包含指定字符串断言 5.4 JSON数据断言六、参数化 5.1 Postman参数化介绍 5.2 Postman参数化实现 5.3 针对项目登录接口参数化实现 总结 前言 五、Postman断言 5.1 Postman断言介…...
Hadoop的Windows环境准备
一、将Hadoop传输到Windows中 1、备份副本 cp -r /opt/softs/hadoop3.1.3/ /opt/softs/hadoop3.1.3_temp 2、删除备份的share目录 cd /opt/softs/hadoop3.1.3_temp rm -rf share/ 3、下载到Windows中 重命名去掉_temp 4、删除备份文件 rm -rf /opt/softs/hadoop3.1.3_t…...
使用亮数据代理IP爬取PubMed文章链接和邮箱地址
💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…...
electron调用dll时应用程序闪退
electron调用dll时,直接闪退,且用如下方式监听无任何输出: window-all-closed 或 will-quit 此时需要检查传给dll的参数及参数类型是否正确,特别是使用ffi-napi时调用dll,使用 ref-napi定义类型,经常容易…...
wordpress gzip/河南seo技术教程
macOS 安装 charles 手机抓包1,安装 Charles1.1 安装 charles破解版2.对手机进行抓包 http3.对手机进行https抓包1,安装 Charles Download Charles 官网下载 charles系列破解激活办法(最高charles4.2都可以激活) 1.1 安装 cha…...
网站开发的重要性/保定百度推广联系电话
概述曾经去网易面试的时候,面试官问了我一个问题,说下完订单后,如果用户未支付,需要取消订单,可以怎么做我当时的回答是,用定时任务扫描DB表即可。面试官不是很满意,提出:用定时任务…...
广州嘉怡服饰有限公司网站建设/厦门网页搜索排名提升
maven jar包冲突 ************************** jar 包冲突 冲突原理:不同的dependency依赖同一jar包的不同版本,导致冲突 A 》 B 》E1C 》 D 》E2 A、C底层依赖于E的不同版本,可能会导致冲突 冲突jar包加载原则 依赖路径最短的优先加载 路…...
网站空间和虚拟主机/东莞seo排名收费
说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 决策树除了能进行分类分析,还能进行回归分析,即预测连续变量,此时的…...
公司做网站提供产品加盟费/网络营销方案模板
记得刚学习程序流一章的时候,就是搞不清楚In和Out,不知道什么时候用in什么时候用out,所以一部分人采取死记硬背的方式读文件:BufferedReader in new BufferedReader(new InputStreamReader(new FileInputStream("infilename…...
湛江网站制作推荐/统计站老站长推荐草莓
机房收费系统总结(思想) 第一次机房收费系统算是接近尾声了,可是我们真正的软件设计之路才刚刚拉开序幕 仔细回想整个做系统的过程,技术先不说,最最令人吃惊的是整个过程将性格,心理,习惯上的种种弊病展现的淋漓尽致.机房收费系统都可以叫心理测试系统了,不过结果只有自己知道…...