json数据格式与异常捕获
json数据格式
-
什么是json
json是一种通用的数据格式
-
json是一种什么样的数据格式(通用)
一个json有且只有一条数据(必须有一条数据)
惟一的这个数据必须是json支持的类型的数据
json支持的类型:
数字 — 包含左右的整数和小数,表示的时候直接写 例:999,-123,0.97,9e3
字符串 — 用双引号引起来的数据 例:“zzx” , “best”
布尔 — true / false (小写)
空值 — null 表示的时候直接写
数组 — 相当于python中的列表:[元素1,元素2…]
字典 — 相当于python中的字典:但是键只能是字符串 例:{“name”:“zzx”, “age”:18}
-
python数据和json数据之间的相互转换
python提供了一个json模块,这个模块中有两个函数专门用来支持json和python的相互转换
json 转 python
json -----> python
数字 int、float
字符串 str双引号可能会变成单引号)
布尔值 bool:true->True false->False
空值 null->None
数组 list
字典 dictloads(json格式的字符串) — 将json格式的字符串转换成对应的python数据
json格式的字符串:字符串的内容是一个合法的json数据(去掉字符串外面的引号,剩下的字符串是一个合法的json数据)
import json
result = json.loads('"zzx"')
print(result) #zzx
result1 = json.loads('[999, "zzx", true, null]')
print(result1,type(result1)) #[999, 'zzx', True, None] <class 'list'>
python 转 json
python -----> json
int、float 数字
str 字符串;单引号会变成双引号
bool bool:True->true False->false
None null
list/tuple 数组
dict 字典;键会转换成字符串
dumps(python数据) — 将python数据转换成对应的json
100 —> “100”
result2 = json.dumps(['zzx', 999, True, None])
print(result2,type(result2)) #["zzx", 999, true, null] <class 'str'>
异常捕获
-
异常
程序报错就叫程序异常如果程序出现异常会终止程序的执行
-
捕获异常
异常捕获就是让程序中指定的代码段出现异常后不终止程序的执行
什么时候需要捕获异常:明知道某个位置可能会出现异常
但是不是因为代码不符合语法造成的而是使用者使用不当造成的
然而又不希望这个地方出现异常的时候终止程序的执行
-
怎么捕获
结构1:(可以捕获一切异常)
try:
需要捕获异常的代码
except:
捕获异常后执行的代码
其他语句结构2:(捕获指定类型异常)
try:
需要捕获异常的代码
except 异常类型: (捕获指定异常,若异常与捕获类型不同则程序报错)
捕获异常后执行的代码
其他语句结构3:(捕获指定多种类型异常)
try:
需要捕获异常的代码
except (异常类型1, 异常类型2,异常类型3…): (捕获指定异常,若异常与捕获类型不同则程序报错)
捕获异常后执行的代码
其他语句结构4:(捕获指定多种类型异常,捕获到不同类型异常处理方式不同)
try:
需要捕获异常的代码
except 异常类型1: (捕获指定异常,若异常与捕获类型不同则程序报错)
捕获异常后执行的代码(处理方法1)
except 异常类型2: (捕获指定异常,若异常与捕获类型不同则程序报错)
捕获异常后执行的代码(处理方法2)
…
其他语句 -
finally
finally后面的代码不论前面是否出现异常,也不管异常是否被捕获都会执行
-
抛出异常 — 主动让程序崩溃
raise 异常类型
# 结构一: try: age = eval(input('请输入年龄:')) except: print('输入错误!年龄必须是整数!') print('----------------------------') # 结构二: try: print(999 + 'zzx') except TypeError: print('类型错误!') # 抛出异常 class AgeError(Exception): def __str__(self): return '年龄值错误' age = eval(input('输入年龄:')) if(age > 200 or age < 0): raise AgeError