当前位置: 首页 > 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文件的数据
http://www.lryc.cn/news/33916.html

相关文章:

  • 三八妇女节快乐----IT女神活动随笔
  • 【PSO-PID】使用粒子群算法整定PID参数控制起动机入口压力值
  • 当代数据分析指南:激发商业洞见的七个方法(上)
  • javaWeb核心02-JSP、EL、JSTL、MVC
  • spring-boot+mybatis-plus连接Oracle数据库,及查询相关数据
  • 电商使用CRM系统有什么好处,如何选择
  • Nacos2.2.0多数据源适配oracle12C-修改Nacos源码
  • 第十四届蓝桥杯三月真题刷题训练——第 5 天
  • 大数据框架之Hive:第3章 DDL(Data Definition Language)数据定义
  • 概率论小课堂:统计学是大数据方法的基础
  • 监控集群概念讲解
  • 如何通过DAS连接GaussDB
  • 支持在局域网使用的项目管理系统有哪些?5款软件对比
  • Linux CentOS7 MySQL 5.7安装
  • Kubernetes学习(四)控制器
  • vue组件间通信的几个方法
  • 商品价格区间设置与排序--课后程序(Python程序开发案例教程-黑马程序员编著-第4章-课后作业)
  • mybatis中sqlSession的使用
  • TPOT(Tree-based Pipeline Optimization Tool) API简介
  • Java 19和IntelliJ IDEA,如何和谐共生?
  • js循环判断的方法
  • git快速入门(1)
  • 韩国绿芯1~16通道触摸芯片型号推荐
  • Go语言设计与实现 -- http服务器编程
  • MySQL-视图
  • 都工作3年了,怎么能不懂双亲委派呢?(带你手把手断点源码)
  • Hive 运行环境搭建
  • SAP ABAP 深度解析Smartform打印特殊符号等功能
  • React17+React Hook+TS4 最佳实践仿 Jira 企业级项目笔记
  • 35- tensorboard的使用 (PyTorch系列) (深度学习)