程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

python處理request返回的json數據

編輯:Python

一. 使用Python的requests庫請求——響應結果處理

在實際工作中,很多接口的響應都是json格式的數據,需要對其進行處理和分析。涉及到json數據處理的方法有兩種:序列化和反序列化:

python中 序列化——將python的字典轉換成json格式字符串,以便進行儲存或者傳輸;

反序列化——將json格式字符串轉換成python字典,用於對其進行分析和處理。

JSON和DICT格式互轉方法:

import json
# 序列化成json字符串
d = {‘name':‘jod'}
j = json.dumps(d)
#反序列化成字典
print json.loads(j)

而在requests庫中,不用json.loads方法進行反序列化,而是提供了響應對象的json方法,用來對json格式的響應體進行反序列化:

r = requests.get(url)

r.json()

二. request返回的數據有兩種方法可以處理:

    1.對request發起請求返回的響應對象進行.json()操作,.json操作返回的是一個字典類型(如果返回的結果為空時則會報錯),如下:

    2.對request請求得到的響應對象中的text數據進行json.loads(text)操作,操作後返回的是字典類型(建議使用這種方法,使用前判斷text是否為空,為空也會報錯),如下:

三. 使用request發送請求並處理返回的結果--基礎模板

import requests
import json
# 以get方法進行請求,可以直接把參數附在後面,也可以傳入參數進行
response=requests.get(f"http://XXXXX/anyq?question={question}")
param={"question":question}
res = requests.get(url='https://b.faloo.com/l/0/1.html',params=param)
# 這裡形參為params
# 如果是post,可以以data形式作為參數進行
params = {"username": self.username,"email": self.email, "password": self.password}
response = requests.post(request_url, data=params)
# 這裡形參為data
# 如果返回的數據是unicode編碼,例如
"""
"answer\":\"\u8bb2\u8bdd\u4ea4\u6d41\u6700\u5c11\u76f8\u96941\u7c73\uff0c\u6700\u597d2\u7c73\u3002
\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u98de\u6cab\u4f20\u64ad\u53ea\u6709\u4e0e\u4f20\u67d3\u6
e90\u8fd1\u8ddd\u79bb\u63a5\u89e6\u65f6\u624d\u53ef\u80fd\u5b9e\u73b0\u3002\u98de\u6cab
"""
# 參考 https://www.cnblogs.com/573734817pc/p/10855147.html 進行解碼
decode_rs=response.text.encode("utf-8").decode('unicode_escape')
# 如果以json格式返回,直接使用json解析,而不是text
json_rs=response.json()
print(json_rs)


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved