Python将类序列化为JSON

2024-10-01 11:40:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个需求,我想构造很多JSON对象。有很多不同的定义,理想情况下我希望像类一样管理它们,构造对象,并按需将它们转储到JSON。在

有没有一个现有的包装/配方让我来做以下的事情

为了简单起见,假设我需要代表工作、学习或两者兼而有之的人:

[{
  "Name": "Foo",
  "JobInfo": {
    "JobTitle": "Sr Manager",
    "Salary": 4455
 },
 {
  "Name": "Bar",
  "CourseInfo": {
    "CourseTitle": "Intro 101",
    "Units": 3
}]

我想创建可以转储有效JSON的对象,但创建方式与常规python类类似。在

我想把我的类定义成db模型:

^{pr2}$

编辑

我编写了自己的小框架来实现这一点。它可以通过pip获得

pip install pymodjson

这里有代码和示例:(MIT) https://github.com/saravanareddy/pymodjson


Tags: pip对象namejson定义foo配方情况
1条回答
网友
1楼 · 发布于 2024-10-01 11:40:49

通过仔细筛选对象的__dict__,可以创建json

工作守则:

import json

class Person(object):
    def __init__(self, name, job=None, course=None):
        self.Name = name
        self.JobInfo = job
        self.CourseInfo = course

    def to_dict(self):
        _dict = {}
        for k, v in self.__dict__.iteritems():
            if v is not None:
                if k == 'Name':
                    _dict[k] = v
                else:
                    _dict[k] = v.__dict__
        return _dict

class Job(object):
    def __init__(self, title, salary):
        self.JobTitle = title
        self.Salary = salary

class Course(object):
    def __init__(self, title, units):
        self.CourseTitle = title
        self.Units = units

persons = [Person("Foo", Job("Sr Manager", 4455)), Person("Bar", Course("Intro 101", 3))]
person_list = [person.to_dict() for person in persons]
print json.dumps(person_list)  

相关问题 更多 >