我编写了以下代码来从 url 读取示例 JSON 数据,
HEADER = {"content-type": "application/josn"}
session = requests.Session()
session.verify = True
session.headers = HEADER
output = session.request("GET", "https://jsonplaceholder.typicode.com/todos/1", timeout=30)
Run Code Online (Sandbox Code Playgroud)
如果我打印output我得到,
<Response [200]>
如果我做,
output = session.request("GET", "https://jsonplaceholder.typicode.com/todos/1", timeout=30).json()
Run Code Online (Sandbox Code Playgroud)
我得到实际json内容,
{u'completed': False, u'userId': 1, u'id': 1, u'title': u'delectus aut autem'}
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,
output = session.request("GET", "https://jsonplaceholder.typicode.com/todos/1", timeout=30)
print(json.loads(output))
Run Code Online (Sandbox Code Playgroud)
我明白了,
File "/usr/lib64/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer
Run Code Online (Sandbox Code Playgroud)
有人可以给我举个例子,我应该什么时候使用.json(),什么时候使用json.loads()?
这.json只是json.loads()响应为 json 时的快捷方式。
print(json.loads(output))
无法正常工作,因为您需要获取请求的正文,我认为是
print(json.loads(output.text))