33 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 json

with 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 json

with 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 json

info = [{"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文件的数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值