我有一个要求,我想构建很多JSON对象。并且有许多不同的定义,理想情况下我想像类和构造对象一样管理它们并根据需要将它们转储到JSON。
是否有现有的包/配方让我做以下
为了保持简单,我可以说我需要代表正在工作,学习或两者兼而有之的人:
[{
"Name": "Foo",
"JobInfo": {
"JobTitle": "Sr Manager",
"Salary": 4455
},
{
"Name": "Bar",
"CourseInfo": {
"CourseTitle": "Intro 101",
"Units": 3
}]
我想创建可以转储有效JSON的对象,但是像普通的python类一样创建。
我想像db模型一样定义我的类:
class Person:
Name = String()
JobInfo = Job()
CourseInfo = Course()
class Job:
JobTitle = String()
Salary = Integer()
class Course:
CourseTitle = String()
Units = Integer()
persons = [Person("Foo", Job("Sr Manager", 4455)), Person("Bar", Course("Intro 101", 3))]
person_list = list(persons)
print person_list.to_json() # this should print the JSON example from above
修改
我写了自己的迷你框架来实现这个目标。它可以通过pip
获得 pip install pymodjson
此处提供代码和示例:(MIT) https://github.com/saravanareddy/pymodjson
答案 0 :(得分:2)
您可以通过从对象的json
小心过滤来创建__dict__
。
工作代码:
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)