Python中有一个名为json
的模块,它可以把Python对象(如list、tuple、dict、int等)转换为符合JSON数据格式的字符串,也可以把JSON数据格式的字符串转换为Python对象。
要将class对象转换成JSON或字典,可以使用内置的json
模块自带的json序列化器。要想json序列化器正确地将class对象中的属性转换成JSON或字典,可以在class内部定义一个方法__dict__()
,该方法返回一个字典,其中包含属性名和对应值,然后将这个字典传递给json序列化器即可。
下面是实现该方法的具体步骤:
- 创建一个class对象,定义
__dict__
方法,在该方法中返回一个字典,包含该对象的所有属性名和对应值。
class MyObject:
def __init__(self, a, b):
self.a = a
self.b = b
def __dict__(self):
return {'a': self.a, 'b': self.b}
- 使用
json.dumps()
方法将class对象转换成JSON格式的字符串。
import json
obj = MyObject(1, 2)
json_string = json.dumps(obj.__dict__)
print(json_string)
# {"a": 1, "b": 2}
- 使用
json.loads()
方法将JSON格式的字符串转换为字典。
json_string = '{"a": 1, "b": 2}'
obj_dict = json.loads(json_string)
print(obj_dict)
# {'a': 1, 'b': 2}
- 使用
json.dumps()
方法将字典转换成JSON格式的字符串。
json_string = json.dumps(obj_dict)
print(json_string)
# {"a": 1, "b": 2}
示例说明:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __dict__(self):
return {'name':self.name, 'age':self.age}
# 把对象转成字典
p1= Person('John', 30)
p_dict = p1.__dict__()
print(p_dict) # {'name': 'John', 'age': 30}
# 把字典转成对象
p2 = Person(**p_dict)
print(p2.name, p2.age) # John 30
# 对象转成json
import json
p_json = json.dumps(p1.__dict__())
print(p_json) # {"name": "John", "age": 30}
# json转成对象
p3_dict = json.loads(p_json)
p3 = Person(**p3_dict)
print(p3.name, p3.age) #John 30