Python 如何用JSON数据中的数据填充类中的对象?
我想用从JSON接收的数据填充我的对象 JSON中的数据键与我的类中的参数命名相同 有没有有效的方法来创建填充对象?因此,我的类将有超过50个变量 我的测试课程:Python 如何用JSON数据中的数据填充类中的对象?,python,json,Python,Json,我想用从JSON接收的数据填充我的对象 JSON中的数据键与我的类中的参数命名相同 有没有有效的方法来创建填充对象?因此,我的类将有超过50个变量 我的测试课程: class Joint: spineX = 0.0 spineY = 0.0 spineZ = 0.0 Json数据: print(jsonData) #prints -> {"spineX":8.9,"spineY":7.7,"spineZ":9.9} 8.9 7.7 9.9 也许可以在类中添加一
class Joint:
spineX = 0.0
spineY = 0.0
spineZ = 0.0
Json数据:
print(jsonData) #prints -> {"spineX":8.9,"spineY":7.7,"spineZ":9.9}
8.9
7.7
9.9
也许可以在类中添加一个
\uuuuu init\uuuuu
:
导入json
类接头:
定义初始值(自、尖晶石、尖晶石、尖晶石):
self.spineX=spineX
self.spineY=spineY
self.spineZ=spineZ
s='{“spineX”:8.9,“spineY”:7.7,“spineZ”:9.9}'
o=json.loads
接头=接头(**o)
打印(vars(接头))
好吧,我将附加这个答案,因为您谈论的是类属性
,而不是实例属性
。您可以使用setattr
:
这是getattr()
的对应项。参数是一个对象
,一个
字符串
和任意值。字符串可以命名现有的
属性或新属性。该函数将值指定给
属性,只要对象允许。例如,setattr(x,
“foobar”,123)
相当于x.foobar=123
您可以这样做:
class Joint:
spineX = 0.0
spineY = 0.0
spineZ = 0.0
s = '{"spineX":8.9,"spineY":7.7,"spineZ":9.9}'
o = json.loads(s)
for k in o.keys():
setattr(Joint, k, o[k])
print(Joint.spineX)
print(Joint.spineY)
print(Joint.spineZ)
输出:
print(jsonData) #prints -> {"spineX":8.9,"spineY":7.7,"spineZ":9.9}
8.9
7.7
9.9
现在,Joint
的每个新实例都将具有这些class属性值。如果您这样做:
x = Joint()
print(x.spineX)
print(x.spineY)
print(x.spineZ)
您还将获得:
8.9
7.7
9.9
更有趣的是,使用setattr()
甚至可以添加未定义的类属性。例如:
setattr(Joint, "spineA", 10.0)
print(Joint.spineA)
将输出:
10.0
非常感谢。非常有用的答案!非常感谢。这个答案包含了我想知道的信息!