【发布时间】:2020-02-26 19:17:47
【问题描述】:
我目前正在开发一个网络服务器,在测试输出 JSON 时会抛出此错误:
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
这是网络服务器的代码:
from flask import Flask, request
import json
app = Flask(__name__)
tasks=[]
#Create a new task
@app.route('/v1/tasks', methods=['POST'])
def post():
data=request.get_json()
title=data["title"]
tasks.append(json.dumps({"id": len(tasks)+1, "title": title, "is_completed": "false"}))
#tasks[len(tasks)+1]={"title": title, "is_completed": "false"}
index=len(tasks)
return json.dumps({"id": index}), 201
这是我使用的测试:
import requests
import json
response = requests.post('http://localhost:5000/v1/tasks', json={'title': "Test Task 2"})
print(response.json())
print(response.status_code)
这是完整的错误回溯:
{'id': 5}
201
Traceback (most recent call last):
File "project1-test2.py", line 42, in <module>
print(response.json())
File "/home/alexanderfarr/.local/lib/python3.6/site-packages/requests/models.py", line 898, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/lib/python3/dist-packages/simplejson/__init__.py", line 518, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 370, in decode
obj, end = self.raw_decode(s)
File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 400, in raw_decode
return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
感谢您的帮助!
编辑:在测试我的 get 函数时,我注意到这甚至没有达到:
#List all tasks created
@app.route('/v1/tasks', methods=['GET'])
def getall():
return json.dumps({"tasks": tasks})
#Get a specific task
@app.route('/v1/tasks/{id}', methods=['GET'])
def getone(id):
print("in get")
if id in tasks:
print(tasks[id])
return json.dumps(tasks[id]), 200
else:
return json.dumps({error: "There is no task at that id"}), 404
我的测试代码:
import requests
import json
response=requests.get('http://localhost:5000/v1/tasks/{1}')
print(response.json())
print(response.status_code)
在控制台日志中,甚至没有显示打印语句:
Traceback (most recent call last):
File "project1-test2.py", line 6, in <module>
print(response.json())
File "/home/alexanderfarr/.local/lib/python3.6/site-packages/requests/models.py", line 898, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/lib/python3/dist-packages/simplejson/__init__.py", line 518, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 370, in decode
obj, end = self.raw_decode(s)
File "/usr/lib/python3/dist-packages/simplejson/decoder.py", line 400, in raw_decode
return self.scan_once(s, idx=_w(s, idx).end())
simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
【问题讨论】:
-
JSON 是否被正确接收,一切正常?
-
{'id': 5} 收到,应该是正确的
-
但是我怎样才能摆脱这个错误呢?
标签: python json python-3.x flask