从 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)
我想创建一个 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)