python实现class对象转换成json/字典的方法

  • Post category:Python

Python中有一个名为json的模块,它可以把Python对象(如list、tuple、dict、int等)转换为符合JSON数据格式的字符串,也可以把JSON数据格式的字符串转换为Python对象。

要将class对象转换成JSON或字典,可以使用内置的json模块自带的json序列化器。要想json序列化器正确地将class对象中的属性转换成JSON或字典,可以在class内部定义一个方法__dict__(),该方法返回一个字典,其中包含属性名和对应值,然后将这个字典传递给json序列化器即可。

下面是实现该方法的具体步骤:

  1. 创建一个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}
  1. 使用json.dumps()方法将class对象转换成JSON格式的字符串。
import json

obj = MyObject(1, 2)
json_string = json.dumps(obj.__dict__)
print(json_string)
# {"a": 1, "b": 2}
  1. 使用json.loads()方法将JSON格式的字符串转换为字典。
json_string = '{"a": 1, "b": 2}'
obj_dict = json.loads(json_string)
print(obj_dict)
# {'a': 1, 'b': 2}
  1. 使用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