我有一个如下所示的类:
class Car:
def __init__(self, name, colour, wheels):
self.name = name
self.colour = colour
self.wheels = wheels
我想从 JSON 文件创建上述类的对象,它看起来像这样,但有很多条目:
"Cars":[
{
"name": "Golf",
"colour": "red",
"wheels": 4,
},
{
"name": "Up",
"colour": "green",
"wheels": 3,
}
]
然后将它们添加到布局为 {"name":object} 的字典中。我已经查看了可用的不同教程和示例,但大多数似乎都是关于转储对象,而不是将它们拉出并从中重新创建对象。
最佳答案
如果您的文件确保始终具有相同的顺序(名称、颜色、轮子)和相同的尺寸(3 个项目),则可以使用如下内容:
JSON 文件 (foo.jsonp>
{"Cars":{
"Golf":{
"name": "Golf",
"colour": "red",
"wheels": 4
},
"Robin": {
"name": "Up",
"colour": "green",
"wheels": 3
}
}
}
>>> import json
>>> import collections
>>> data = ''.join(i.replace('\n','') for i in open('foo.json').readlines())
>>> decoder = json.JSONDecoder(object_pairs_hook=collections.OrderedDict)
>>>
>>> class Car(object):
... def __init__(self, name, colour, wheels):
... self.name = name
... self.colour = colour
... self.wheels = wheels
...
>>> j = decoder.decode(data)
>>>
>>> out_dict = {car:Car(*j['Cars'][car].values()) for car in j['Cars']}
>>>
>>> golf = out_dict['Golf']
>>> golf.name
u'Golf'
>>> golf.colour
u'red'
>>> golf.wheels
4
关于python - 在 python 中从 JSON 解码对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43901923/