python 将object 序列化成json字符串的方法

记录下:

class LicenceInfo(models.Model):
    STATE={
        (1,"使用中"),
        (2, "注销"),
        (3, "停用"),
    }
    ID = models.AutoField(primary_key=True)  # ID 自增列
    OnlyCode=models.CharField(max_length=100) #唯一码
    LicenceName=models.CharField(max_length=50) #项目名称
    CompanyName=models.CharField(max_length=32) #厂家名称
    GenerateDate = models.DateTimeField(auto_now_add=True)  # 生成时间
    effective = models.DateTimeField()  # 有效时间
    seconds = models.CharField(max_length=32, null=True)   # 有效秒
    email = models.CharField(max_length=32, null=True)  # 厂家邮箱
    phone= models.CharField(max_length=32, null=True)  # 厂家电话
    clear=models.CharField(max_length=2000) #明文
    cipher=models.CharField(max_length=2000) #密文
    UserID = models.CharField(max_length=32)  # 操作人ID
    User=models.CharField(max_length=32)  #操作人姓名
    LicenceState=models.SmallIntegerField(choices=STATE) #状态
    Licence_A=models.CharField(max_length=100) #购买时间
    Licence_B=models.CharField(max_length=100) #厂家联系人
    Licence_C=models.CharField(max_length=100) #预留3

重点 
    def toJSON(self):
        fields = []
        for field in self._meta.fields:
            fields.append(field.name)


        d = {}
        for attr in fields:
            if isinstance(getattr(self, attr), datetime.datetime):
                d[attr] = getattr(self, attr).strftime('%Y-%m-%d %H:%M:%S')
            elif isinstance(getattr(self, attr), datetime.date):
                d[attr] = getattr(self, attr).strftime('%Y-%m-%d')
            else:
                d[attr] = getattr(self, attr)


        import json

        return json.dumps(d,ensure_ascii=False)#ensure_ascii=False的作用是中文输出是不会呈现\xxx\xx的字符


使用方法:

obj = LicenceInfo.objects.get(ID=id)
str= obj.toJSON()


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页