Python对象转JSON但仅选择特定属性

-1 投票
2 回答
510 浏览
提问于 2025-06-08 05:48

我正在尝试把我的对象转换成JSON格式,也就是一种数据交换的格式。这个对象使用了SQL Alchemy,所以直接用 json.dumps(vars(self)) 这个方法不太管用。我想找一种语法来实现这个功能。

    def to_json(self):
        obj = {
            self.won,
            self.gameOver,
            self.allowMultiColor,
            self.pattern,
            self.board,
            self.round,
            self.totalRounds
        }

        return json.dumps(obj)

然后我想像这样重新定义一些字段:

    def from_json(self, json_string):
        obj = json.loads(json_string)

        self.won = obj['won']
        self.gameOver = obj['gameOver']
        self.allowMultiColor = obj['allowMultiColor']
        self.pattern = obj['pattern']
        self.board = obj['board']
        self.round = obj['round']
        self.totalRounds = obj['totalRounds']

但是 to_json 这个方法不管用。当我再试着获取它的时候,出现了这个错误:TypeError: list indices must be integers or slices, not str

我刚开始学Python,所以还不太懂那些复杂的语法。

相关问题:

  • 暂无相关问题
暂无标签

2 个回答

0

你可以把sqlalchemy的对象放进marshmallow的模式里,并且在这个模式中定义它的属性,这样做没有问题。

1

obj 必须是一个字典,这样才能用字符串作为索引。
所以 obj 应该像这样:

obj = {
            'won':self.won,
            'gameOver':self.gameOver,
            ...
        }

撰写回答