【发布时间】:2019-07-01 05:42:55
【问题描述】:
class HelloView(ModelViewSet):
serializer_class = HelloSerializer
def get(self, request, *args, **kwargs):
range_type = request.data['range_type'].lower()
if range_type == "daily":
try:
client = MongoClient('localhost', 27017)
db = client['MyDatabase']
from_date=datetime.datetime.strptime(request.data['from_date'], "%Y-%m-%d")
to_date = datetime.datetime.strptime(request.data['to_date'], "%Y-%m-%d")
response_list = []
for i in db.MyCollection.find({"date": {'$gte': from_date,
'$lte': to_date}}):
response_list.append(i)
return JsonResponse(response_list, safe=False)
except Exception as e:
return Response({"status": e}, status=HTTP_400_BAD_REQUEST)
我有一个字典列表:
response_list = [
{
'_id': ObjectId('5c5ac3227e23080a2beac8a5'),
'date': datetime.datetime(2019, 2, 3, 0, 0),
'per_service_bill': {'network': 5.234823, 'storage': 0.00355492071},
'total_cost': 5.23837792071
},
{
'_id': objectid('5c5ac32d7e23080a2beac8be'),
'date': datetime.datetime(2019, 2, 4, 0, 0),
'per_service_bill': {'network': 4.9254925499999995, 'storage': 0.00351209034},
'total_cost': 4.92900464034
}
]
我已经尝试过这些(使用它们各自的导入),但没有一个有效:
- 返回 JsonResponse(response_list, safe=False)
- json.dumps(response_list, safe = False)
- serializers.serialize('json', response_list)
谁能告诉我解决方法是什么?
我需要返回 json 响应,但它给出的错误如下:
“TypeError:TypeError 类型的对象不是 JSON 可序列化的”
【问题讨论】:
-
你能分享你正在使用的json和抛出这个错误的代码吗?
-
response_list =[{'_id': ObjectId('5c5ac3227e23080a2beac8a5'), 'date': datetime.datetime(2019, 2, 3, 0, 0), 'per_service_bill': {'Network' : 5.234823, '存储': 0.00355492071}, 'total_cost': 5.23837792071}, {'_id': ObjectId('5c5ac32d7e23080a2beac8be'), 'date': datetime.datetime(2019, 2, 4, 0, 0),'per_service_bill ':{'网络':4.9254925499999995,'存储':0.00351209034},'total_cost':4.92900464034}]
-
您需要展示更多您正在尝试的代码。因为从错误消息看来,您正在尝试序列化
TypeError的对象而不是列表 -
你能分享你的相关
views吗?我也尝试了你的 json 数据并且没有返回错误return Response(response_list, status=status.HTTP_200_OK) -
@uedemir 这是我尝试的第一件事,但也没有用
标签: python json django django-rest-framework django-serializer