我想将我的字典对象转换为JSON,因为我需要在ReactJS文件中发送它。我的代码如下:
def get(self, request, pk, format = None):
queryset = SocialAccount.objects.filter(provider='twitter').get(id=pk)
user_id= queryset.uid
name = queryset.extra_data['name']
username = queryset.extra_data['screen_name']
data = {'user_id':user_id,'name':name,'username':username}
data = json.dumps(data)
print(type(json.loads(data)))
return Response(json.loads(data))
在这个视图中,我在“print(type(json.loads(data)))”行而不是JSON对象中得到了“class'dict'”。如果我出错了,请指导我。我需要做什么? 感谢。
答案 0 :(得分:5)
您成功制作了JSON 。你做错了是你再次解码 JSON,回到Python对象,你只测试了解码的结果。这是一个新的字典对象;您在data
中生成并存储的JSON是有效的JSON,并且您已经证明它可以再次成功解码。
换句话说,不会再次解码。你已经拥有了JSON,只需返回:
data = {'user_id':user_id,'name':name,'username':username}
data = json.dumps(data)
return Response(data)
您可以通过返回JsonResponse
object来简化此操作:
# at the top
from django.http import JsonResponse
# in your view
data = {'user_id':user_id,'name':name,'username':username}
return JsonResponse(data)
这也可以为您设置正确的内容类型。
答案 1 :(得分:4)
您可以使用JsonResponse
代替响应:
def get(self, request, pk, format=None):
# ...
data = {'user_id': user_id,'name': name,'username': username}
return JsonResponse(data)
您的问题是您使用json.loads(data)
将数据转换回Python对象。相反,您只需要返回Response(data)
,但您应该更喜欢JsonResponse
。