Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将一些JSON键转换为Python对象_Python_Json - Fatal编程技术网

将一些JSON键转换为Python对象

将一些JSON键转换为Python对象,python,json,Python,Json,我有一个Python类,如下所示: class Game: """Holds all game related attributes - usually one instance created per game.""" def __init__( self, game_id, game_type, date_time, game_state, venue, home

我有一个Python类,如下所示:

class Game:
    """Holds all game related attributes - usually one instance created per game."""

    def __init__(
        self,
        game_id,
        game_type,
        date_time,
        game_state,
        venue,
        home,
        away,
        preferred,
        live_feed,
        season,
    ):

        self.game_id = game_id
        self.game_type = game_type
        self.date_time = date_time
        self.game_state = game_state
        self.venue = venue
        self._live_feed = live_feed
        self.home_team = home
        self.away_team = away
        self.season = season
目前,我通过解析来自API响应的JSON并选取一些值并将它们传递到该类的
init()
函数来创建该类的实例

将API响应传递到
init()
函数中,并从类中的JSON字典中解析/挑选这些属性以设置类级别的属性,这样做是否更好(因此该类周围的所有逻辑都在一个位置)

例如,我在
main()
函数中获取这些值,然后将它们传递到类中

# Create a Game Object
    gameobj_game_id = game_info["gamePk"]
    gameobj_game_season = game_info["season"]
    gameobj_game_type = game_info["gameType"]
    gameobj_date_time = game_info["gameDate"]
    gameobj_game_state = game_info["status"]["abstractGameState"]

game_obj = Game(gameobj_game_id, gameobj_game_type, gameobj_date_time, gameobj_game_state...)
但该代码是从对象创建逻辑中抽象出来的


任何建议都将不胜感激

您可能需要定义一个类方法,它的任务是从这样的响应中额外添加“right”字段

class Game:
    """Holds all game related attributes - usually one instance created per game."""

    def __init__(
        self,
        game_id,
        game_type,
        date_time,
        game_state,
        venue,
        home,
        away,
        preferred,
        live_feed,
        season,
    ):

        self.game_id = game_id
        self.game_type = game_type
        self.date_time = date_time
        self.game_state = game_state
        self.venue = venue
        self._live_feed = live_feed
        self.home_team = home
        self.away_team = away
        self.season = season

    @classmethod
    def from_json(cls, resp):
        return Game(
            game_id=resp["gamePk"],
            game_type=resp["gameType"],
            ...
        )
类型本身就是“方法”(在这种情况下,
Game(…)
间接等同于
Game.\uuuu new\uuuuuuu(…)
),它提供了创建对象的规范方式,不知道每一位信息来自何处。对于相同的数据,额外的类方法充当不同来源的包装器。

我会选择(尽管我会通过字典理解来实现)。您可能还想通过代码> GAMOOBOR=游戏(**MyPARAMSMSIN AYDICT)<代码>来考虑关键字解包。