在 django 中序列化非模型类
Posted
技术标签:
【中文标题】在 django 中序列化非模型类【英文标题】:Serialize non model class in django 【发布时间】:2013-01-07 23:09:29 【问题描述】:我有一个班级(非模型)
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]
中序列化一个类。
【问题讨论】:
这并不容易:见***.com/a/4822098/146283 【参考方案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 )
【讨论】:
以上是关于在 django 中序列化非模型类的主要内容,如果未能解决你的问题,请参考以下文章
在使用 UUID 字段作为主字段的 Django 模型中添加非主键自动字段或“序列”字段
如何从django中具有@property装饰器的模型类序列化函数
python Django Rest_Framework框架 模型类序列化器(ModelSerializer)详解(图文并茂版)
python Django Rest_Framework框架 模型类序列化器(ModelSerializer)详解(图文并茂版)