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

33 JSON操作

目录

一、介绍

二、JSON的特点

三、JSON语法

1、json中的数据类型

四、JSON文件的定义

五、读取JSON文件

1、读取json文件的两种方式

(1)read、write

(2)json.load

2、使用json.load读取json文件的步骤

3、练习读取json文件

六、练习读取json文件

七、写入(了解)

1、作用

2、将数据写入json文件的步骤

3、练习将数据写入json文件


一、介绍

1、JSON的全程是“JavaScript Object Notation”,是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式
  • 基于文本:json是文本文件,一般不包含图片、视频等内容
  • 独立于语言:json不是某一种语言特有的,Python、Java、C++...等都能操作python文件
  • 轻量级:相同的数据量,json文件占用的文件大小相对较小
  • 数据交换格式:后端服务器和前端页面交换数据 使用的格式
2、在自动化测试中经常用来存放测试数据,文件后缀名为:.json
  • 其他常见的数据源文件格式:txt/excel/csv/xml

二、JSON的特点

1、纯文本格式:不支持音频/视频/图片
2、具有良好的自我描述性,方便阅读与编写
3、具有清晰的层次结构
4、相较于XML文件,能够有效提升网络传输效率

三、JSON语法

1、json中的数据类型

  • 对象{}   --->   python字典
  • 数组{}   --->   python列表
  • 字符串,必须使用双引号   --->   str
  • 数字类型   --->   int、float
  • bool类型(true false)   --->   True False
  • 空值null   --->   None
2、json文件,是一个对象 或者是 数组,对象和数组可以相互嵌套
3、json中的对象,是由键值对组成的,键必须是字符串类型
4、json中的数据直接使用逗号隔开,最后一个数据后边不能加逗号

四、JSON文件的定义

1、需求
  • 我叫小明,我今年18岁,性别男,学校空,爱好听歌、吃饭、打豆豆,我的居住地址为:国家中国、城市广州。
2、创建json文件
3、示例代码
{"name": "小明","age": 18,"isMan": true,"school": null,"like": ["听歌","吃饭","打豆豆"],"adress": {"country": "China","city": "⼴州"}
}

五、读取JSON文件

1、读取json文件的两种方式

(1)read、write

  • json文件的本质是文本文件,可以直接使用read和write进行操作

(2)json.load

  • json文件比较特殊,比较像python中的字典和列表,按照read和write的操作,想要取到数据比较麻烦,所以一般用专门的方法读取json文件,可以直接得到python中的列表和字典

2、使用json.load读取json文件的步骤

  • 步骤1:import json                   #导包
  • 步骤2:json.load(文件对象)       #得到的是列表或者字典(取决于json文件是数组还是对象)

3、练习读取json文件

{"name": "小明","age": 18,"isMan": true,"school": null,"like": ["听歌","吃饭","打豆豆"],"adress": {"country": "China","city": "⼴州"}
}
import jsonwith open('info.json',encoding='utf-8') as f:buf = json.load(f)print(type(buf))print(buf)      #info.json中是对象,所以得到的是字典# 先判断从json文件中读到的值是什么数据类型,再根据不同的方法处理# 姓名print(buf.get('name'))# 城市print(buf.get('adress').get('city'))#获取第二个爱好print(buf.get('like')[1])#学校print(buf.get('school'))'''
运行结果:
<class 'dict'>
{'name': '小明', 'age': 18, 'isMan': True, 'school': None, 'like': ['听歌', '吃饭', '打豆豆'], 'adress': {'country': 'China', 'city': '⼴州'}}
小明
⼴州
吃饭
None
'''

六、练习读取json文件

1、需求
  • 我叫小明,我今年18岁,性别男,爱好听歌、吃饭、打豆豆,我的居住地址为:国家中国、城市广州。
  • 我叫小红,我今年17岁,性别女,爱好听歌、学习、购物,我的居住地址为:国家中国、城市北京。
  • 获取每个人的姓名,年龄,性别,城市
2、json文件
[{"name": "小明","age": 18,"isMan": true,"hobby": ["听歌","吃饭","打豆豆"],"adress": {"country": "China","city": "广州"}},{"name": "小红","age": 17,"isMan": false,"hobby": ["听歌","学习","购物"],"adress": {"country": "China","city": "北京"}}
]
3、代码实现
import jsonwith open("info2.json", encoding='utf-8') as f:buf = json.load(f)print(type(buf)) #得到的是一个数组# 方式一print(f"姓名:{buf[0].get('name')},年龄:{buf[0].get('age')},性别:{buf[0].get('isMan')},城市:{buf[0].get('adress').get('city')}")print(f"姓名:{buf[1].get('name')},年龄:{buf[1].get('age')},性别:{buf[1].get('isMan')},城市:{buf[1].get('adress').get('city')}")# 方式二for data in buf:print(f"姓名:{data.get('name')},年龄:{data.get('age')},性别:{data.get('isMan')}"f"城市:{data.get('adress').get('city')}")#方式三:当isMan的值为true,打印男,当isMan的值为false时,打印女for data1 in buf:'''python中扁平化代码的写法(推荐):  条件为true执行的代码  if判断条件  else:条件为false执行的代码a='a'  if 3 > 1 else 'b''''sex = "男" if data.get('isMan') else "女"print(f"姓名:{data1.get('name')},年龄:{data1.get('age')},性别:{sex}"f"城市:{data1.get('adress').get('city')}")

七、写入(了解)

1、作用

  • 将Python中的列表或者字典 转换为 json文件

2、将数据写入json文件的步骤

  • 步骤1:import json                   #导包
  • 步骤2:json.dump(Python中数据, ⽂件对象)

3、练习将数据写入json文件

import jsoninfo = [{"name":"小王","age":18,"adrress":{"country":"中国","city":"广州"}},{"name":"小李","age":17,"adrress":{"country":"中国","city":"北京"}}]with open("info3.json",'w',encoding='utf-8') as f:# json.dump(info,f)# json.dump(info,f,ensure_ascii=False)  #直接显示中文json.dump(info,f,ensure_ascii=False,indent=2)   #格式化写入json文件的数据

相关文章:

33 JSON操作

目录 一、介绍 二、JSON的特点 三、JSON语法 1、json中的数据类型 四、JSON文件的定义 五、读取JSON文件 1、读取json文件的两种方式 &#xff08;1&#xff09;read、write &#xff08;2&#xff09;json.load 2、使用json.load读取json文件的步骤 3、练习读取json文件 六、练…...

三八妇女节快乐----IT女神活动随笔

献丑了&#xff0c;一首小小散文诗&#xff0c;请大家轻喷 O(≧口≦)O 我的答案 天下芸芸众生&#xff0c;好似夜幕漫天繁星。 与你相识&#xff0c;只是偶然。 简单的一个招呼&#xff0c;于是开始了一段故事。 我们或是诉说&#xff0c;或是分享&#xff1b; 我们彼此倾听&…...

【PSO-PID】使用粒子群算法整定PID参数控制起动机入口压力值

最近在学优化算法&#xff0c;接触到了经典寻优算法之粒子群PSO&#xff0c;然后就想使用PSO算法来调节PID参数&#xff0c;在试验成功之后将此控制算法应用到了空气起动系统上&#xff0c;同时与之前的控制器进行对比看看哪种控制效果最好。 0 引言 PID参数整定主要有两种&…...

当代数据分析指南:激发商业洞见的七个方法(上)

如果说眼下的发生的事能证明什么&#xff0c;那就是基于实时可信的数据分析正在变得越来越重要。但是要是想要在需要的时候准确地获取中肯的洞察&#xff0c;我们所需要的可不只是漂亮的可视化。 如何让你的员工都有能力和机会都做出最好的决策&#xff0c;不管这个决策会有多…...

javaWeb核心02-JSP、EL、JSTL、MVC

文章目录JSP1&#xff0c;JSP 概述2&#xff0c;JSP 快速入门2.1 搭建环境2.2 导入 JSP 依赖2.3 创建 jsp 页面2.4 编写代码2.5 测试3&#xff0c;JSP 原理4&#xff0c;JSP 脚本4.1 JSP 脚本分类4.2 案例4.2.1 需求4.2.2 实现4.2.3 成品代码4.2.4 测试4.3 JSP 缺点5&#xff0…...

spring-boot+mybatis-plus连接Oracle数据库,及查询相关数据

配置java 略&#xff08;这里我用的是jdk1.8&#xff09; 配置maven 环境变量&#xff1a; M2_HOME&#xff1a;D:\LJ\software\java\maven\apache-maven-3.6.3 Path&#xff1a;%M2_HOME%\bin 仓库/jdk/镜像云设置(./config/sitting) 仓库 <localRepository> D:/…...

电商使用CRM系统有什么好处,如何选择

数据显示&#xff0c;使用电商CRM客户管理系统后&#xff0c;企业销售额提高了87%&#xff0c;客户满意度提高了74%&#xff0c;业务效率提高了73%。要在竞争激烈的电商市场取得成功&#xff0c;与目标受众的有效沟通是有效的方法。下面说说什么是电商CRM系统&#xff1f;电商C…...

Nacos2.2.0多数据源适配oracle12C-修改Nacos源码

从2.2.0版本开始,可通过SPI机制注入多数据源实现插件,并在引入对应数据源实现后,便可在Nacos启动时通过读取application.properties配置文件中spring.datasource.platform配置项选择加载对应多数据源插件.本文档详细介绍一个多数据源插件如何实现以及如何使其生效。 文章目录一…...

第十四届蓝桥杯三月真题刷题训练——第 5 天

目录 题目1&#xff1a;数的分解 题目描述 运行限制 代码&#xff1a; 题目2&#xff1a;猜生日 题目描述 运行限制 代码&#xff1a; 题目3&#xff1a;成绩分析 题目描述 输入描述 输出描述 输入输出样例 运行限制 代码&#xff1a; 题目4&#xff1a;最大和…...

大数据框架之Hive:第3章 DDL(Data Definition Language)数据定义

第3章 DDL&#xff08;Data Definition Language&#xff09;数据定义 3.1 数据库&#xff08;database&#xff09; 3.1.1 创建数据库 1&#xff09;语法 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPER…...

概率论小课堂:统计学是大数据方法的基础

文章目录 引言I 统计学1.1 统计学的内容1.2 统计学的目的II 用好数据的五个步骤2.1 设立研究目标2.2 设计实验,选取数据。2.3 根据实验方案进行统计和实验,分析方差。2.4 通过分析进一步了解数据,提出新假说。2.5 使用研究结果III 数据没用好的原因3.1 霍桑效应3.2 数据的稀…...

监控集群概念讲解

监控概述 1、监控的重要性 监控是运维日常的重要工作之一&#xff1b; 监控是有多重要&#xff1f; 监控可以帮助运维监控服务器的状态&#xff1b;要及时解决&#xff1b; 如果淘宝、腾讯宕机了1个小时&#xff1f; 损失是无法估量的&#xff1b; 服务器是否故障、宕不…...

如何通过DAS连接GaussDB

文章目录1 实验介绍2 实验目的3 配置DAS服务4 SQL使用入门1 实验介绍 本实验主要描述如何通过华为云数据管理服务 (Data Admin Service&#xff0c;简称DAS) 来连接华为云GaussDB数据库实例&#xff0c;DAS是一款专业的简化数据库管理工具&#xff0c;提供优质的可视化操作界面…...

支持在局域网使用的项目管理系统有哪些?5款软件对比

一、选择私有部署的原因以及该方案的优点有很多可能的原因导致人们更倾向于使用私有部署的企业管理软件&#xff0c;其中一些原因可能包括&#xff1a;1.数据安全性要求&#xff1a;一些企业管理软件包含敏感的商业数据和隐私信息&#xff0c;为了保护这些信息不被未经授权的第…...

Linux CentOS7 MySQL 5.7安装

准备工作 //创建目录 mkdir /opt/mysql //跳转目录 cd /opt/mysql下载MySQL 请耐心等待&#xff0c;也可以在Windows下载以后上传到 /opt/mysql目录 wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar解压 tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-b…...

Kubernetes学习(四)控制器

ReplicaSet ReplicaSet的目的是维护一组在任何时候都处于运行状态的Pod副本的稳定集合。因此&#xff0c;它通常用来保证给定数量的、完全相同的Pod的可用性。 ReplicaSet的工作原理 ReplicaSet是通过一组字段来定义的&#xff0c;包括一个用来识别可获得的pod的集合的选择符…...

vue组件间通信的几个方法

一&#xff0c;props属性传递数据 适用场景&#xff1a;父组件传递数据给子组件 子组件设置props属性&#xff0c;定义接收父组件传递过来的参数 父组件在使用子组件标签中通过字面量来传递值 Children.vue props:{ // 字符串形式 name:String // 接收的类型参数 // 对象…...

商品价格区间设置与排序--课后程序(Python程序开发案例教程-黑马程序员编著-第4章-课后作业)

实例2&#xff1a;商品价格区间设置与排序 在网上购物时&#xff0c;面对琳琅满目的商品&#xff0c;我们应该如何快速选择适合自己的商品呢&#xff1f;为了能够让用户快速地定位到适合自己的商品&#xff0c;每个电商购物平台都提供价格排序与设置价格区间功能。假设现在某平…...

mybatis中sqlSession的使用

文章目录sqlsession的使用依赖jdbc.propertiesmysql-config.xml配置逆向工程创建sqlSessionsqlsession的使用 在最开始我们使用jdbcUtil的方式进行硬编码&#xff0c;sql字符串写的很难受&#xff0c;使用mybatis可以解决这个问题&#xff0c;它提供了数据库与实体类的关系映射…...

TPOT(Tree-based Pipeline Optimization Tool) API简介

文章目录TPOT简介TPOT APIClassification接口形式&#xff1a;Parameters&#xff1a;Attributes:Functions&#xff1a;Regression接口形式Parameters:&#xff08;只列与分类任务有差异的参数&#xff09;TPOT简介 TPOT是一个Python自动机器学习&#xff08;AML&#xff09;…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...