Django无效的JSON响应

时间:2015-09-30 06:23:41

标签: json django django-models django-views

以下代码生成下面给出的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]

}

1 个答案:

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