获取字节类型的错误对象在 Django 中不是 JSON 可序列化的
Getting Error Object of type bytes is not JSON serializable in django
我每个人都在尝试将我的回复转换为 json 我提到的出现问题的错误。我如何将此响应转换为 json,因为我的问题是十进制和 b(字节),请帮助我。
代码- 正在执行原始 sql 查询并转换为 json 格式
def s(reqeust):
car_report= connection.cursor()
car_report.execute('''select....''')
car_report_data = car_report.fetchall()
json_res=[]
for row in car_report_data:
json_obj=dict(number=row[0],name=row[1],total_trips=row[2],status=row[3],day1_trips=row[4],day2_trips=row[5],day3_trips=row[6],day4_trips=row[7],day5_trips=row[8],day6_trips=row[9],day7_trips=row[10])
json_res.append(json_obj)
print(json_res,'json_res')
return JsonResponse(json_res,safe=False)
响应。
[{'number': '0001', 'name': 'john', 'total_trips': Decimal('32'), 'status': '', 'day1_trips': b'8', 'day2_trips': b'17',
'day3_trips': b'0', 'day4_trips': b'0', 'day5_trips': b'7', 'day6_trips': b'R', 'day7_trips': b'0'}]
您的错误原因是 JSON 不理解 'bytes'。因此,您需要将字节串转换为字符串。
下面是一种方法。
def s(reqeust):
car_report= connection.cursor()
car_report.execute('''select....''')
car_report_data = car_report.fetchall()
json_res=[]
for row in car_report_data:
srow = [x.decode('utf-8') if isinstance(x, bytes) else x for x in row]
json_obj = dict(number=srow[0],
name=srow[1],
total_trips=srow[2],
status=srow[3],
day1_trips=srow[4],
day2_trips=srow[5],
day3_trips=srow[6],
day4_trips=srow[7],
day5_trips=srow[8],
day6_trips=srow[9],
day7_trips=srow[10])
json_res.append(json_obj)
print(json_res,'json_res')
return JsonResponse(json_res,safe=False)
我每个人都在尝试将我的回复转换为 json 我提到的出现问题的错误。我如何将此响应转换为 json,因为我的问题是十进制和 b(字节),请帮助我。
代码- 正在执行原始 sql 查询并转换为 json 格式
def s(reqeust):
car_report= connection.cursor()
car_report.execute('''select....''')
car_report_data = car_report.fetchall()
json_res=[]
for row in car_report_data:
json_obj=dict(number=row[0],name=row[1],total_trips=row[2],status=row[3],day1_trips=row[4],day2_trips=row[5],day3_trips=row[6],day4_trips=row[7],day5_trips=row[8],day6_trips=row[9],day7_trips=row[10])
json_res.append(json_obj)
print(json_res,'json_res')
return JsonResponse(json_res,safe=False)
响应。
[{'number': '0001', 'name': 'john', 'total_trips': Decimal('32'), 'status': '', 'day1_trips': b'8', 'day2_trips': b'17',
'day3_trips': b'0', 'day4_trips': b'0', 'day5_trips': b'7', 'day6_trips': b'R', 'day7_trips': b'0'}]
您的错误原因是 JSON 不理解 'bytes'。因此,您需要将字节串转换为字符串。
下面是一种方法。
def s(reqeust):
car_report= connection.cursor()
car_report.execute('''select....''')
car_report_data = car_report.fetchall()
json_res=[]
for row in car_report_data:
srow = [x.decode('utf-8') if isinstance(x, bytes) else x for x in row]
json_obj = dict(number=srow[0],
name=srow[1],
total_trips=srow[2],
status=srow[3],
day1_trips=srow[4],
day2_trips=srow[5],
day3_trips=srow[6],
day4_trips=srow[7],
day5_trips=srow[8],
day6_trips=srow[9],
day7_trips=srow[10])
json_res.append(json_obj)
print(json_res,'json_res')
return JsonResponse(json_res,safe=False)