Сериализировать немодельный класс в django

у меня класс (не модель)

from django.utils import simplejson
class myclass:
    def __init(self):
        self.x = "1877"
        self.y = "1410"
        self.z = "400"
        self.w = "67"
        self.a ="0"
        self.b = "1"
        self.c = "319996"
        self.d ="187702"
        self.t = "168000"

def ajaxRes(request):
    mobj = myclass;
    json_str = simplejson.dumps(mobj)
    return HttpResponse(json_str,mimetype ="application/x-javascript")

я получил следующую ошибку:

class myapp.views.myclass at 0x7faadc020c18> is not JSON serializable

Я также пробовал сериализаторы django, но, похоже, они работают только для класса модели.

from django.core import serializers
data = serializers.serialize("json", mobj.objects.all())

выдает ошибку, что mobj не имеет объектов атрибутов.

Как можно сериализовать класс в django [json format].


person David    schedule 24.01.2013    source источник
comment
Это не так просто: см. stackoverflow.com/a/4822098/146283.   -  person schneck    schedule 24.01.2013


Ответы (1)


Вам нужно подготовить сериализатор simplejson для обработки вашего класса:

from django.utils import simplejson

class HandleMyClass(simplejson.JSONEncoder):
     """ simplejson.JSONEncoder extension: handle MyClass"""
     def default(self, obj):
         if isinstance(obj, MyClass):
             return obj.__dict__
         return simplejson.JSONEncoder.default(self, obj)

data = simplejson.dumps( dictionary, cls=HandleMyClass )
person Pawel Furmaniak    schedule 24.01.2013