对象转json
你可以使用Python内置的json模块中的dumps()方法将Python对象转换为JSON格式。对于复杂对象,可以使用default参数来指定一个函数,该函数将被用于对象的序列化。例如,如果您有一个自定义类,您可以定义一个函数来将其转换为JSON格式。下面是一个例子:
import json
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def person_encoder(person):
if isinstance(person, Person):
return {"name": person.name, "age": person.age}
else:
raise TypeError("Object of type Person is not JSON serializable")
person = Person("John", 30)
person_json = json.dumps(person, default=person_encoder)
print(person_json)
这里是一个更复杂的例子,它演示了如何将嵌套的Python对象转换为JSON格式:
import json
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
class Student(Person):
def __init__(self, name, age, major):
super().__init__(name, age)
self.major = major
class Teacher(Person):
def __init__(self, name, age, subject):
super().__init__(name, age)
self.subject = subject
def person_encoder(person):
if isinstance(person, Person):
return {"name": person.name, "age": person.age}
else:
raise TypeError("Object of type Person is not JSON serializable")
def student_encoder(student):
if isinstance(student, Student):
return {"name": student.name, "age": student.age, "major": student.major}
else:
raise TypeError("Object of type Student is not JSON serializable")
def teacher_encoder(teacher):
if isinstance(teacher, Teacher):
return {"name": teacher.name, "age": teacher.age, "subject": teacher.subject}
else:
raise TypeError("Object of type Teacher is not JSON serializable")
student = Student("John", 20, "Computer Science")
teacher = Teacher("Jane", 35, "Mathematics")
person_list = [student, teacher]
person_json = json.dumps(person_list,
default=lambda obj: obj.__dict__,
indent=4,
separators=(',', ': '),
sort_keys=True,
ensure_ascii=False)
print(person_json)
字典转对象
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person_dict = {"name": "John", "age": 30}
person = Person(**person_dict)
print(person.name)
print(person.age)