- 1、什么是JSON
- 2、JSON数据
- 3、python数据与JSON 数据之间的相互转换
- 3.1、json---->python
- 示例
- 3.2、python---->json
- 4、JSON的实际应用
JSON和XML都是一种通用的数据格式,可以用于不同编程语言之间的数据交流
JSON格式相对于xml数据更简单轻小,传输速度更快,xml相当于JSON更安全
2、JSON数据json数据格式的要求:一个JSON只有一个数据,唯一的这个数据必须是JSON支持的类型的数据
JSON支持的类型:
- 数字:包括整数和小数,表示的时候直接写:100、0.31、-21、3e4
- 字符串:由双引号引起来的数据 “sadsa”、“小明”
- 布尔:只有true 和false两个值
- 数组:相当于python的列表 [数据1,数据2,…]
- 空值:null
- 字典:相当于python的字典,但是JSON中的键只能是字符串
json.load(json格式字符串) 将 json格式字符串 对应的JSON数据转换成python数据 注意:json格式字符串 指的是json数据的字符串
json | python |
---|---|
数字 | 数字 |
字符串 | 字符串(双引号变单引号) |
布尔 | 布尔(true false->True False) |
空值 | 空值(null->None) |
数组 | 列表 |
字典 | 字典 |
content=open('data.json',encoding='utf-8').read() result=json.loads(content) print(content) print(result)
# result=json.loads("abc") # 报错,字符串内容是abc,不是一个合法的JSON数据 result=json.loads('"abc"') print(result) # abc result=json.loads('true') print(result) # true result=json.loads('100') print(result) # 100 result=json.loads('[100,"小明",null,true,false]') print(result)示例
# 示例 从网页接口中解析数据获取所有英雄的名字 # 1 获取JSON数据(从文件中读出来,直接做网络请求) import requests resp=requests.get('https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js?ts=2766570') content=resp.text # 2 json 解析 result=json.loads(content) for i in result['hero']: print(i['name'],i['title'])3.2、python---->json
json.dumps(Python数据) 将指定python数据转成对应的json格式字符串
python | json |
---|---|
int、float | 数字 |
str | 字符串(单引号转成双引号) |
bool | True False->true false |
None | null |
列表元组 | 数组 |
字典 | 字典 |
print(json.dumps(100)) # 100 print(json.dumps('abc')) # "abc" print(json.dumps(True)) # true result=json.dumps({'a':10,20:30,'name':'丽丽','ismarried':True}) print(result) # {"a": 10, "20": 30, "name": "u4e3du4e3d", "ismarried": true}4、JSON的实际应用
# 示例 学生管理系统添加学生 import json ''' ========添加学生======== 姓名: 年龄: 手机号: 专业: 籍贯: 添加成功! 1.继续 2.退出 请选择 ''' ''' 数据存储思路 1、数据持久化 2、数据存储的格式 ''' def add_stu(): while True: # 输入学生信息 print(' ========添加学生======') name = input('请输入学生姓名: ') age = input('请输入学生的年龄: ') tel = input('请输入学生的电话: ') major = input('请输入学生的专业: ') address = input('请输入学生的籍贯: ') # 2.保存学生信息 content=open('file/student.txt', 'r', encoding='utf-8').read() all_stu=json.loads(content) # type:list all_stu.append({'name':name,'age':age,'tel':tel,'major':major,'address':address}) open('file/student.txt','w',encoding='utf-8').write(json.dumps(all_stu)) print('添加成功') # 3.提示继续或者退出 print('1.继续') print('2.退出') value=input('请选择:') if value=='1': pass else: print(all_stu) break if __name__ == '__main__': add_stu()