一、json数据

1.什么是json

json是一种数据格式;几乎所有的高级语言都支持这种数据格式的处理,
所以json主要用于不同语言之间的数据交流。

2.json格式

json格式的要求:1) 一个json有且只有一个数据
2) 唯一的这个数据必须是json支持的数据类型的数据

json支持的数据类型:

  1. 数字类型(Number) - 所有数字对应的类型,表示的时候直接写,例如:100,-102,12.3,3e4
  2. 字符串(String) - 用双引号引起来的字符集(只能是双引号),
    例如:“abs”, “abc\n123”, “\ue400abc”
  3. 布尔(Boolean) - 只有 true 和 false 两个值
  4. 数组(Array) - 相当于python的列表
  5. 字典(Dictionary) - 相当于Python中的字典,key只能是字符串
  6. 空值 - null, 相当于python的None

3.json数据和python数据之间的相互转换

python中提供了一个json模块,专门用来提1)json数据转python数据

json -> python

数字 - int/float
字符串 - 字符串(可能会将双引号变成单引号)
布尔 - 布尔(首字母会变成大写字母)
数组 - 列表(元素也会进行相应的转换)
字典 - 字典(元素也会转换)
null - None

json.loads(json格式的字符串) - 将json格式字符串转换成对应的python数据;
json格式的字符串: 字符串内容满足json格式

json.loads('abc')    # 报错! JSONDecodeError
result = json.loads('"abc"')
print(result, type(result))

二、异常捕获

1.什么是异常

异常就是错误(程序报错就是程序出现异常)
执行程序的过程中如果出现异常,程序会直接结束(实际是线程结束)

2.什么是异常捕获

1)异常捕获就是让程序在出现异常的时候,不崩溃继续执行。

2)不是任何异常都可以捕获的,只有在明知道某段代码会出现异常但是又不能或者不方便通过修改代码来避免,这个时候就可以对异常捕获。

3.怎么捕获异常

方法一:捕获代码段1中所有异常
 try:
 需要捕获异常的代码段-代码段1
 except:
 捕获到异常后会执行的代码段
 finally:
 代码块其他代码
执行过程:
 先执行try里面的代码段,执行过程中如果出现异常,程序不崩溃,马上直接except后面的代码值,执行完后执行其他代码;
 如果执行try里面的代码段没有出现异常,except后面的代码不会值,直接执行其他代码方法二:捕获指定异常
 try:
 需要捕获异常的代码段
 except 异常类型:
 捕获到指定异常后会执行的代码段
 finally:
 代码块方法三:同时捕获多种异常,针对不同的异常做相同的处理
 try:
 需要捕获异常的代码段
 except (异常类型1, 异常类型2, …):
 捕获到指定异常后会执行的代码段
 finally:
 代码块方法四:同时捕获多种异常,针对不同的异常做不同的处理
 try:
 需要捕获异常的代码段
 except 异常类型1:
 代码块1
 except 异常类型2:
 代码块2
 …
 finally:
 代码块

4.finally - 写遗书

#### 方法一
```python
try:
age = int(input('请输入年龄:'))
print(f'age:{age}')
except:
print('输入年龄的格式不正确!')
print('==========')

### 方法二
list1 = [10, 20]
print(list1[10])  # IndexError
print({'a': 10}['b'])   # KeyError
open('files/aa.txt') # FileNotFoundError

try:
print({'a': 10}['b'])
list1 = [10, 20]
print(list1[10])
except KeyError:
print('出现异常')

try:
    list1 = [10, 20]
    # print(list1[10])
except KeyError:
    print('出现异常')
finally:
    print('转移财产!')

5.抛出异常 - 主动让程序奔溃

raise 异常类型
异常类型可以是系统异常类型也可以是自定义的异常类型