从 python 中的 JSON 文件创建对象(使用类方法)?

Create an object from a JSON file in python (using a classmethod)?

我想创建一个 class 方法,该方法采用 JSON(字典)字符串并创建调用它的 class 的实例。 例如,如果我有一个 class Person 继承自 class Jsonable 年龄和姓名:

class Person(Jsonable):
    def __init__(self, name, age):
        self.name = name
        self.age = age
class Jsonable:
    @classmethod
    def from_json(json_string):
        # do the magic here

如果我有一个 JSON 字符串 string = "{'name': "John", 'age': 21}" 并且当我说 person1 = Person.from_json(string) 时,我想创建 person1,名字为 John,年龄为 21。我还必须保留 class 以某种方式命名,这样当我调用例如 Car.from_json(string) 时它会引发 TypeError。

它假设您在 JSON 字符串中有一个键 __class 包含目标 class 名称

import json

class Jsonable(object):
    @classmethod
    def from_json(cls, json_string):
        attributes = json.loads(json_string)
        if not isinstance(attributes, dict) or attributes.pop('__class') != cls.__name__:
            raise ValueError
        return cls(**attributes)