python 中的json和异常捕获

一、JSON

1、什么是json数据

Json(JavaScript Object Notation)是一种轻量级的数据交换格式。

2、json数据的语法

一个json数据只有且只有一个数据,这个数据的数据类型必须是json支持的数据类型

3、json支持的数据类型
a、数字类型:

包含所有的数字,包括整数,小数:例如100,12.4,-2.3

正数前面不能加‘+’。json支持科学计数法

b、字符串:

使用双引号括起来的数据;例如:“abc”, “abc123”

c、布尔:

只有 true和false两个值。

d、数组:

相当于Python的列表,用[]括起来,多个元素用逗号隔开;

例如:[122,“abc”]

e、字典:

相当于Python的字典,用{}括起来,多个键值对用逗号隔开,

例如:{“a” : 1, “b” : 2, “3” : 4}

f.空值

null,相当于Python中的none


4、json数据转换python

python中提供了json模块专门处理json数据

将json数据转换成python数据(通过爬虫获取到别人提供的json数据,在python中出处理它)

a、转换方式

jsonpython
数字int/float
字符串字符串
布尔bool,会将json中的true/false转换成True/False
数组列表
字典字典
空值(null)None

b、loads方法

loads(字符串, encoding = ‘utf-8’) - 将字符串中的json数据转换成对应的python数据

注意:字符串中的内容必须是字符串数据

import json
content = json.loads('"abc"', encoding = 'utf-8')
print(content, type(content)) # abc <class 'str'>
5、python转换json数据

将python数据转换成json数据(python写后台接口将数据提供给客户端)

转换方式 python -> json

pythonjson (json.dumps(对象))
100(整数)100(字符串)
‘abc’“abc”(单引号变成双引号)
True/Falsetrue/false
列表数组
元祖数组
字典字典
集合不能转化成json,报错
Nonenull

注意:转换后都是字符串类型

dumps(对象) # 这儿的对象指的就是python数据

将指定的对象转换成json数据,以字符串的形式返回这儿的对象指的就是python数据

注意:返回值是字符串,并且字符串的内容是json数据

6、json文件处理

json文件不一定是后缀是.json都是json文件,json文件是文件内容是json数据的文件。

load(文件对象) - 将指定文件中的内容读出来,并且转换成python对应数据。文件对象对应的文件必须是json文件。

dump(对象, 文件对象) - 将指定对象转换成是json格式的字符串,然后写入指定的文件中。

注意:这儿的对象对应的类型必须是能够转换成json的数据类型。

二、json来源

python中的数据请求(HTTP请求),是通过第三方库requsets来提供的。

requests的第三方库的使用

get/post 方法都是发送请求获取接口提供的数据

获取数据的方法都是get请求

get(url, params = None)

url - 需要获取的数据的接口地址

params - 字典,参数列表(给服务器发送请求的时候需要传给服务器的数据)

完整的接口:协议://主机地址/路径?参数名1=值1&参数名2=值2

发送请求,并且获取返回的数据,

服务器返回的数据叫响应

从响应中获取数据

1、获取json数据

content_json = response.json() # 会自动将json数据转换炒年糕python对应的数据

2、获取字符串数据

content_text = response.text
print(type(content_text))
print(content_text)

3、获取二进制数据

content_bytes = response.content # 获取图片,音频等
print(content_bytes)

post(url, params = None, json = None)

三、异常捕获

1、异常捕获报错的地方不报错

知道某段代码会出现异常,而且没有办法避免,同时又不希望出现异常的时候程序不崩溃;这个时候就可以通过异常捕获来让程序不崩溃并且自行处理异常。

2、异常捕获语法

a、try - except(可以捕获所有类型的异常)

try:
    代码段1(可能出现异常的代码段)
except:
    代码段2(出现异常后处理异常的代码段)

执行过程:执行代码段1,如果代码段1出现异常,程序不崩溃,直接执行代码段2

如果代码段1中没有出现异常,就不执行代码段2而是直接执行后面的其他语句。

b、try - except 错误类型 (捕获指定类型的异常)

try:
    代码段1
except 错误类型:
    代码段2(只有代码段1中出现了指定类型的异常才捕获)
        

执行过程:代码段1中出现指定类型错误就执行代码段2

c、try - except(错误类型1,错误类型2…) (同时捕获多种异常)

try:
    print('abc'[4])
except (IndexError, IndentationError):
    print("Error")

d、try - except 错误类型1 - except 错误类型2…(同时捕获多种异常,可以对不同的异常做不同的处理)

try:
    代码段1
except 错误类型1:
    代码段2
except 错误类型2:
    代码段3
    
	
3、抛出异常

主动让程序崩溃

raise 错误类型

if age > 18:
	raise ValueError

说明:错误类型 - 可以是系统类型的错误,也可以是自定义错误类型(要求这个值必须是一个类,而且是Exception的子类)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值