当前位置: 首页 > news >正文

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值
  1. 对象(Object)
  • 表示为一组无序的键值对集合,用花括号 {} 包裹。
  • 键必须是字符串,并且用双引号包裹。
  • 每个键值对之间用逗号 , 分隔。
  • 键和值之间用冒号 : 分隔。

示例:

{"name": "John","age": 30,"isStudent": false,"address": {"city": "New York","zip": "10001"}
}
  1. 数组(Array)
  • 表示为一个有序的值集合,用方括号 [] 包裹。
  • 各个值之间用逗号 , 分隔。

示例:

["apple","banana","cherry"
]

json对象和字符串区别:

特性JSON 对象JSON 数组
表示花括号 {} 包裹方括号 [] 包裹
数据形式无序的键值对集合有序的值的集合
字符串(用双引号包裹)无键,只有索引
可以是任何JSON数据类型可以是任何JSON数据类型
使用场景表示复杂结构化数据表示有序列表数据
  1. 字符串(String)
  • 表示为一串字符序列,用双引号 " 包裹。
  • 可以包含转义字符,例如 \" 表示双引号,\\ 表示反斜杠,\n 表示换行符等。

示例:

"Hello, world!"
  1. 数字(Number)
  • 表示为整数或浮点数。
  • 可以是正数、负数,或零。

示例:

42
3.14
  1. 布尔值(Boolean)

表示为 truefalse

示例:

true
false
  1. 空值(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 类型示例
objectdict{"name": "John", "age": 30} -> {'name': 'John', 'age': 30}
arraylist[1, 2, 3] -> [1, 2, 3]
stringstr"hello" -> 'hello'
numberintfloat42 -> 42
3.14 -> 3.14
trueTruetrue -> True
falseFalsefalse -> False
nullNonenull -> 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环境搭建与优化&#xff1a;深入剖析四个方面、五个方面、六个方面及七个关键要点 在大数据处理领域&#xff0c;Apache Spark凭借其出色的性能和灵活性备受瞩目。而要在Python中利用Spark的强大功能&#xff0c;首先需要搭建一个稳定且高效的Spark Python环境。本…...

【微信小程序开发】小程序中的上滑加载更多,下拉刷新是如何实现的?

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

从 Android 恢复已删除的备份录

本文介绍了几种在 Android 上恢复丢失和删除的短信的方法。这些方法都不能保证一定成功&#xff0c;但您可能能够恢复一些短信或其中存储的文件。 首先要尝试什么 首先&#xff0c;尝试保留数据。如果你刚刚删除了信息&#xff0c;请立即将手机置于飞行模式&#xff0c;方法是…...

如何使用Python中的random模块生成随机数

在Python中&#xff0c;random模块提供了多种用于生成随机数的函数。以下是一些基本示例&#xff1a; 生成随机整数&#xff1a; 使用random.randint(a, b)函数生成一个介于a和b之间的随机整数&#xff08;包括a和b&#xff09;。 python复制代码 import random random_int …...

AI大数据处理与分析实战--体育问卷分析

AI大数据处理与分析实战–体育问卷分析 前言&#xff1a;前一段时间接了一个需求&#xff0c;使用AI进行数据分析与处理&#xff0c;遂整理了一下大致过程和大致简要结果&#xff08;更详细就不方便放了&#xff09;。 文章目录 AI大数据处理与分析实战--体育问卷分析一、数据…...

不用拷贝日志文件!AutoDL TensorBoard直连训练目录的终极配置指南

不用拷贝日志文件&#xff01;AutoDL TensorBoard直连训练目录的终极配置指南 每次训练模型&#xff0c;最烦人的步骤之一可能就是整理日志文件了。想象一下&#xff0c;你刚在AutoDL上跑完一个YOLO训练任务&#xff0c;看着runs/train/exp8目录下新鲜出炉的events.out.tfevent…...

AudioSeal从零开始:无需Python环境,纯shell脚本启动全流程

AudioSeal从零开始&#xff1a;无需Python环境&#xff0c;纯shell脚本启动全流程 你是不是遇到过这种情况&#xff1f;在网上听到一段AI生成的语音&#xff0c;真假难辨&#xff0c;想确认它的来源却无从下手。或者&#xff0c;你创作了一段音频内容&#xff0c;担心被别人盗…...

FanControl风扇控制进阶指南:从问题诊断到智能调节的全面解决方案

FanControl风扇控制进阶指南&#xff1a;从问题诊断到智能调节的全面解决方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_…...

2026年存储市场核心数据与趋势分析

市场规模与增长2026年全球存储市场规模预计达2200亿美元&#xff08;TrendForce数据&#xff09;&#xff0c;年复合增长率约8.3%。NAND Flash和DRAM将分别占据52%与48%份额&#xff0c;企业级SSD需求增速显著&#xff0c;预计年增14%。技术路线演变3D NAND层数突破600层&#…...

ABAP Function ALV实战:如何让采购单号点击跳转ME23N(附完整代码)

ABAP Function ALV交互实战&#xff1a;从静态表格到动态业务门户的构建 在SAP的日常开发与运维中&#xff0c;我们常常面对这样的场景&#xff1a;业务用户打开一个采购订单清单报表&#xff0c;面对密密麻麻的单号&#xff0c;他们需要逐一手动复制&#xff0c;再打开ME23N事…...

深入理解Polymer-bundler工作原理:从源码解析到bundle manifest生成

深入理解Polymer-bundler工作原理&#xff1a;从源码解析到bundle manifest生成 【免费下载链接】polymer-bundler Moved to Polymer/tools monorepo 项目地址: https://gitcode.com/gh_mirrors/po/polymer-bundler Polymer-bundler是一款高效的前端资源打包工具&#…...

微软Fluent Emoji终极指南:600+表情符号完整使用方法

微软Fluent Emoji终极指南&#xff1a;600表情符号完整使用方法 【免费下载链接】fluentui-emoji A collection of familiar, friendly, and modern emoji from Microsoft 项目地址: https://gitcode.com/gh_mirrors/fl/fluentui-emoji 微软Fluent Emoji是一套由微软开发…...

FluidNC运动控制固件终极指南:从零开始构建智能CNC系统

FluidNC运动控制固件终极指南&#xff1a;从零开始构建智能CNC系统 【免费下载链接】FluidNC The next generation of motion control firmware 项目地址: https://gitcode.com/gh_mirrors/fl/FluidNC FluidNC作为新一代运动控制固件&#xff0c;为CNC系统提供了强大而灵…...

uniapp H5打包后白屏?手把手教你排查JavaScript启用问题与Nginx部署

从白屏到流畅&#xff1a;深度解析UniApp H5部署的完整链路与实战排障 你是否也曾在深夜&#xff0c;满怀期待地将精心开发的UniApp项目打包成H5&#xff0c;部署到服务器后&#xff0c;满怀信心地打开浏览器&#xff0c;迎接你的却是一片刺眼的白屏&#xff0c;或者那个令人沮…...

TFT Overlay:重构云顶之弈决策体系的智能辅助工具

TFT Overlay&#xff1a;重构云顶之弈决策体系的智能辅助工具 【免费下载链接】TFT-Overlay Overlay for Teamfight Tactics 项目地址: https://gitcode.com/gh_mirrors/tf/TFT-Overlay 在快节奏的云顶之弈对局中&#xff0c;玩家常面临三大核心痛点&#xff1a;装备合成…...