2015-01-05 9 views
0

я использую Django 1.7.1, я получил ошибку "не JSON сериализации" .Здесь мой кодJSON ответ с питоном

def Project_info(request): 
     project_id=request.GET.get('project_id') 
     people = Project_Management.objects.all().values() 
     print people 
     return returnSuccessShorcut ({'people': people }) 



def returnresponsejson(pass_dict, httpstatus=200): 
    json_out = simplejson.dumps(pass_dict) 
    return HttpResponse(json_out, status=httpstatus, content_type="application/json") 


def returnSuccessShorcut(param_dict={}, httpstatus=200): 
    param_dict['success'] = True 
    return returnresponsejson(param_dict, httpstatus) 

и выход консоли: -

[{'abbreviation': u'IOS', 'acid': None, 'end_date': datetime.datetime(2014, 7, 1, 4, 59, 59, tzinfo=<UTC>), 'start_date': datetime.datetime(2014, 3, 21, 5, 0, tzinfo=<UTC>), 'user_story_id': None, 'project_name': u'2014 -KHL-347/Khaylo', 'modify_date': None, 'project_id': u'67375', 'user_name': None, 'id': 1L, 'isActive': None}] 

Но когда я ударил api в браузере, я получил вышеуказанную ошибку. Просьба предложить решения.

+0

какая строка в коде показывает ошибку? – akonsu

+0

в этой строке: -def returnSuccessShorcut (param_dict = {}, httpstatus = 200): – jademaddy

+0

http://stackoverflow.com/questions/16336271/is-not-json-serializable – akonsu

ответ

0

Вам необходимо преобразовать людей в список, прежде чем сериализовать его, потому что ValuesQuerySet, возвращенный QuerySet.values, не может быть сериализован по умолчанию.

def Project_info(request): 
    project_id=request.GET.get('project_id') 
    people = Project_Management.objects.all().values() 
    people = list(people) 
    return returnSuccessShorcut ({'people': people }) 
+0

datetime.datetime (2014, 7, 1, 4, 59, 59, tzinfo = ) не является сериализуемым JSON – jademaddy

+0

@ user3762689, см. Этот ответ: http://stackoverflow.com/a/5781657/2225682 – falsetru

+1

@ user3762689, Короче: используйте 'from django.core.serializers.json import DjangoJSONEncoder; json_out = simplejson.dumps (pass_dict, cls = DjangoJSONEncoder) ' – falsetru

Смежные вопросы