python json.dumps()的数据包含\,如何清理它

时间:2017-11-13 09:23:38

标签: python json

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\"}]}"

如何解决问题

3 个答案:

答案 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)