Day13——json_requests_exception

一、json

使用 Json 函數(shù)需要導(dǎo)入 json 庫(kù):import json

I. 數(shù)據(jù)類(lèi)型轉(zhuǎn)化對(duì)照表

  • Python 轉(zhuǎn) Json
Python Json
dict object
list, tuple array
str string
int, float number
True true
False false
None null
  • Json 轉(zhuǎn) Python
Json Python
array list
其余同上

II. 函數(shù)

1 json.dumps(對(duì)象) 將 Python對(duì)象編碼成 Json字符串
result = json.dumps([10, 'abc', True, None])
print(type(result), result)

結(jié)果:
<class 'str'> [10, "abc", true, null]        # '[10, "abc", true, null]'
2 json.loads(字符串[, encoding]) 將 Json字符串解碼為 Python對(duì)象
message = '{"name": "張三", "age": 18, "sex": null, "marry": true}'
content = json.loads(message, encoding='utf-8')
print(type(content), content)

結(jié)果:
<class 'dict'> {'name': '張三', 'age': 18, 'sex': None, 'marry': True}
3 json.dump(對(duì)象,文件對(duì)象) 將 Python對(duì)象編碼成 Json字符串,寫(xiě)入指定文件對(duì)象中
all_student = [
        {'name': '小明', 'age': 12, 'tel': '1237736'},
        {'name': 'yuting', 'age': 18, 'tel': '23333'}
    ]
with open('student.json', 'w', encoding='utf-8') as f:
    json.dump(all_student, f)    # 相當(dāng)于 f.write(json.dumps(all_student))
4 json.load(文件對(duì)象, encoding) 將 Json文件中的 Json字符串讀出,并解碼為 Python對(duì)象
with open('data.json', encoding='utf-8') as f:
    result = json.load(f)    # 相當(dāng)于 result = json.loads(f.read())
    print(type(result), result['msg'])

結(jié)果:
<class 'dict'> 成功!

二、requests

I. 安裝

File -> Settings ->Project -> Project Interpreter -> + (添加) -> 搜索requests -> Install Package

II. 方法

get(url, params=None)
url 字符串,需要獲取的數(shù)據(jù)的接口地址
params 字典,參數(shù)列表(給服務(wù)器發(fā)送請(qǐng)求的時(shí)候需要傳給服務(wù)器的數(shù)據(jù))

注(完整的接口):
https://www.apiopen.top/meituApi?page=1
協(xié)議 ://主機(jī)地址 /路徑 ?參數(shù)名1=值1 &參數(shù)名2=值2

  • 發(fā)送請(qǐng)求,并且獲取返回的數(shù)據(jù)(服務(wù)返回的數(shù)據(jù)叫響應(yīng))
response = requests.get('https://www.apiopen.top/meituApi?page=1')

response 類(lèi)型:
 <class 'requests.models.Response'>
  • 從響應(yīng)中獲取數(shù)據(jù)
  1. 獲取json數(shù)據(jù)
gx_json = response.json()    # 會(huì)自動(dòng)將json數(shù)據(jù)轉(zhuǎn)換成python對(duì)應(yīng)的數(shù)據(jù)

gx_json 類(lèi)型:
<class 'dict'>
  1. 獲取字符串?dāng)?shù)據(jù)
gx_text = response.text

gx_text 類(lèi)型:
<class 'str'>
  1. 獲取二進(jìn)制數(shù)據(jù)(原始數(shù)據(jù))
gx_bytes = response.content

gx_bytes 類(lèi)型:
<class 'bytes'>

三、exception

1. 異常捕獲

I. try - except

(可以捕獲所有類(lèi)型的異常 - 只要代碼段1中出現(xiàn)了異常就捕獲)

語(yǔ)法格式:
try:
?代碼段1(可能會(huì)出現(xiàn)異常的代碼段)
except:
?代碼段2(出現(xiàn)異常后處理異常的代碼段)

其他語(yǔ)句

II. try - except 錯(cuò)誤類(lèi)型

(捕獲指定類(lèi)型的異常 - 只有代碼段1中出現(xiàn)了指定類(lèi)型的異常才捕獲)

語(yǔ)法格式:
try:
?代碼段1(可能會(huì)出現(xiàn)異常的代碼段)
except 錯(cuò)誤類(lèi)型:
?代碼段2(出現(xiàn)異常后處理異常的代碼段)

其他語(yǔ)句

III. try - except (錯(cuò)誤類(lèi)型1,錯(cuò)誤類(lèi)型2...)

(同時(shí)捕獲多種指定異常)

語(yǔ)法格式:
try:
?代碼段1(可能會(huì)出現(xiàn)異常的代碼段)
except (錯(cuò)誤類(lèi)型1,錯(cuò)誤類(lèi)型2...):
?代碼段2(出現(xiàn)異常后處理異常的代碼段)

其他語(yǔ)句

IV. try - except 錯(cuò)誤類(lèi)型1 - except 錯(cuò)誤類(lèi)型2...

(同時(shí)捕獲多種異常,可以對(duì)不同的異常做不同的處理)

語(yǔ)法格式:
try:
?代碼段1(可能會(huì)出現(xiàn)異常的代碼段)
except 錯(cuò)誤類(lèi)型1:
?代碼段2
except 錯(cuò)誤類(lèi)型2:
?代碼段3

其他語(yǔ)句

2.拋出異常

主動(dòng)讓程序奔潰

raise 錯(cuò)誤類(lèi)型

(程序執(zhí)行到這句代碼就出現(xiàn)指定類(lèi)型的異常!)
說(shuō)明:錯(cuò)誤類(lèi)型 - 可以是系統(tǒng)提供的錯(cuò)誤類(lèi)型, 也可以是自定義錯(cuò)誤類(lèi)型(要求這個(gè)值必須是一個(gè)類(lèi),而且是Exception的子類(lèi))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容