gpt4 book ai didi

Python 将类序列化为 JSON

转载 作者:行者123 更新时间:2023-12-01 03:41:59 27 4
gpt4 key购买 nike

我有一个要求,我想构造很多 JSON 对象。有许多不同的定义,理想情况下我想像类一样管理它们并构造对象并根据需要将它们转储为 JSON。

是否有现有的包/配方可以让我执行以下操作

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

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

我想创建可以转储有效 JSON 的对象,但像常规 Python 类一样创建。

我想像数据库模型一样定义我的类:

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

代码和示例可在此处获取:(麻省理工学院) https://github.com/saravanareddy/pymodjson

最佳答案

您可以通过仔细过滤对象的 __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)

关于Python 将类序列化为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39462444/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com