python - 在 python 中从 JSON 解码对象

标签 python json

我有一个如下所示的类:

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/

相关文章:

python - Flask 在虚拟环境中不起作用

javascript - 从后端发送 JSON 到前端

Python + Scrapy + JSON + XPath : How to scrape JSON data with Scrapy

java - 将 JSON 数据传递到 SQLite 并检索它

python - 随机时间生成

python - reportlab 图片转 PDF : "please call tobytes()"

python - 在 Python imshow 图中突出显示没有数据的区域

python - 如何将嵌套的 Protobuf 结构解析为 Python 字典?

json - 带有 JSON 结果的 Bing 搜索 HTTP 请求示例?

sql - 查询每个学生的平均分