def getJson(filmList):
film_json = FilmJson()
for video in filmList:
videoName = video.videoName
videoUrl = video.videoUrl
videoTime = video.videoTime
dic = {}
if videoName is None:
break
if videoUrl is None:
dic['videourl'] = ""
else:
dic['videourl'] = videoUrl
if videoTime is None:
dic['videotime'] = ""
else:
dic['videotime'] = videoTime
dic['videoname'] = videoName
film_json.videolist.append(dic)
dict__ = film_json.__dict__
print(dict__)
return dict__
浏览器发送获取请求
后端打印
{'filmid': '', 'videolist': [{'videourl': '', 'videotime': '', 'videoname': 'Lifeline'}, {'videourl': '', 'videotime': '', 'videoname': 'Ex Static'}, {'videourl': '', 'videotime': '', 'videoname': 'test'}]}
@api_view(http_method_names=['GET'])
@permission_classes((permissions.AllowAny,))
def sendFilm(request):
....
myjson = jsonbean.getJson(filmList)
return Response(json.dumps(myjson,ensure_ascii=False))
邮差测试获得结果
"{\"filmid\": \"\", \"videolist\": [{\"videourl\": \"\", \"videotime\": \"\", \"videoname\": \"Lifeline\"}, {\"videourl\": \"\", \"videotime\": \"\", \"videoname\": \"Ex Static\"}, {\"videourl\": \"\", \"videotime\": \"\", \"videoname\": \"test\"}]}"
如何解决问题
答案 0 :(得分:2)
你有双重倾销。
你只需要json.dumps()一次。发生此错误的原因是您在已经是JSON的对象上有json.dumps()。
return Response( myjson )
应该返回没有\"
的常规对象。
由于myjson
已经是JSON字符串而不是字典对象。
答案 1 :(得分:1)
将数据传递给Response时不要json.dumps
。
答案 2 :(得分:0)
您正在使用json.dumps()将JSON对象再次编码为JSON。如果你再次使用json.loads(),那么\'s将会消失。
return Response(json.loads(json.dumps(myjson,ensure_ascii=False)))
#OR
return Response(myjson)