在python中建模JSON数据的最佳方式



这个问题可能是基于观点的,但我想我会试一试。

我正在尝试创建各种从JSON数据中获取值的类。JSON数据不在我的控制之下,所以我必须解析数据并选择我想要的值。我当前的实现从python3的集合模块中派生出UserDict。但是,我有一些迭代,其中我直接创建了属性,并为解析的数据设置了值。

我改为使用UserDict的原因是易于使用更新功能。

然而,我觉得调用对象并使用MyClass['attribute']而不是MyClass.attribute很奇怪

有没有一种更像蟒蛇的方式来建模这些数据?

我不是100%相信这是有意义的,但你可以试试这个:

class MyClass (object):
def __init__(self, **kwargs):
for key in kwargs.keys():
setattr(self, key, kwargs[key])
my_json = {"a":1, "b":2, "c":3}
my_instance = MyClass(**my_json)
print (my_instance.a)
# 1
print (my_instance.b)
# 2
print (my_instance.c)
# 3

---编辑

如果你有嵌套的数据,你也可以试试这个:

class MyClass (object):
def __init__(self, **kwargs):
for key in kwargs.keys():
if isinstance(kwargs[key],dict):
setattr(self, key, MyClass(**kwargs[key]))
else:
setattr(self, key, kwargs[key])
my_json = {"a":1, "b":2, "c":{"d":3}}
my_instance = MyClass(**my_json)
print (my_instance.a)
# 1
print (my_instance.b)
# 2
print (my_instance.c.d)
# 3

最新更新