如何从json文件加载对象

时间:2019-06-21 21:37:37

标签: python json

我正在尝试从json文件加载简单对象。但是我在这方面出错了。以下是我的代码,以及db.txt文件中json格式的数据。我正在从其他一些类调用model.py的getAll()函数。

文件:model.py

class MyImageView(pyqtgraph.ImageView):
    def wheelEvent(self, event):
        event.accept()

    # you can do the same with other mouse events, if that's your issue too
    def mousePressEvent(self, event):
        event.accept()

class YourWidget(QtWidgets.QWidget):
    def __init__(self, *args, **kwargs):
        QtWidgets.QWidget.__init__(self, *args, **kwargs)
        [...]
        im1 = MyImageView()

文件:db.txt

import simplejson

class Person(object):
    def __init__(self, first_name = None, last_name = None):
        self.first_name = first_name
        self.last_name = last_name

    def name(self):
        return ("%s %s"%(self.first_name, self.last_name))

    @classmethod
    def getAll(self):
        database = open('db.txt', 'r')
        result = []
        json_list = simplejson.loads(database.read())
        print("json list {}".format(json_list))
        for item in json_list:
            print("item {}".format(item))
            print("type of item {}".format(type(item)))
            item = simplejson.loads(item)
            person = Person(item['first_name'], item['last_name'])
            result.append(person)
        return result

错误(输出):

[
    {
        "first_name":"first name",
        "last_name":"last name"
    },
    {
        "first_name":"first name 2",
        "last_name":"last name 2"
    }
]

2 个答案:

答案 0 :(得分:4)

simplejson.loads(database.read())一直解析JSON。您不需要在每个级别上都做到这一点。由于item已经是字典,因此您可以立即使用它。

答案 1 :(得分:-2)

const events = await Event.findAll({
  where: {
    [Op.or]: [
      { homeId: { [Op.eq]: id } },
      { awayId: { [Op.eq]: id } }
    ],
    status: { [Op.eq]: 'FINISHED' }
  },
  order: [[sequelize.col('date'), 'DESC']],
  attributes: ['date'],
  raw: true,
});

return events.map((event) => event.date);

db_list是词典列表,您可以遍历这些词典并以这种方式访问​​每个词典。