以下代码生成下面给出的JSON。但是当我从JSON lint验证它时,它是无效的。我在这里做错了什么?
def json_candidate_get(request, model, m_id=None):
response = {'message' : 'Incorrect Json'}
try:
obj = model.objects.filter(pk=m_id)
ce = Candidate_profiles.objects.filter(pk=m_id)
cw = Candidate_company_profiles.objects.filter(pk=m_id)
response = json.dumps({ 'TechnologiesValue':[],'Technologies': [] })
except Exception as e:
logging.exception("Exception"+str(e))
return response
@is_login()
def candidate_create(request,m_id=None,token=None):
response_data = {'message': 'unsuccessfull'}
if token is not None:
try:
if request.method == 'GET':
response_data = json_candidate_get(request,Candidates,m_id)
print response_data
#response_data = serializers.serialize('json', response_data)
except Exception as e:
logging.exception(e)
return HttpResponse(response_data, content_type="application/json")
JSON:
{
TechnologiesValue: [0]
Technologies: [0]
}
答案 0 :(得分:1)
json.dumps
函数用于将某些Python对象转换为JSON字符串。但是您已经将模型实例(通过QuerySets)序列化为JSON字符串,并且json.dumps
正试图将这些字符串重新转换为JSON - 它只知道您已经通过它{{1}对象,而不是这些str
对象代表JSON。
str
使用的JSON编码器只知道如何转换少数内置类型:
因此,您需要做的是将模型实例转换为其中一种类型。最简单的解决方案是在QuerySets的每个元素上使用django.forms.models.model_to_dict
,如下所示:
json.dumps