JSON,列表可能是空的 - 什么类型?

问题描述 投票:0回答:1

我想指定一个具有prizes属性的对象。这可能是PrizeInfo对象的列表,也可能是空列表。我正在寻找类似下面的代码的架构,除了这会返回以下错误:

"MySchema": {
    "properties": {
        "prizes": {
            "type": "List['PrizeInfo', 'null']",
        }
    }
 }

E   TypeError: Too many parameters for typing.List; actual 2, expected 1

我正在使用这些模板来生成Python类。

python json type-hinting
1个回答
3
投票

“空”列表没有注释。无论列表内容必须具体如何,任何空列表对象都将满足List[...]类型提示。

因此,如果允许空列表,请使用

List['PrizeInfo']

这允许任何具有0个或更多元素的列表,因此空列表包含在该提示中。

如果您想要在None对象旁边允许使用null值(QSON中的PrizeInfo),那么请使用Union[...] annotationNone

List[Union['PrizeInfo', None]]

如果你想说NonePrizeInfo对象列表是允许的(用JSON术语,null或数组),那么使用

Union[List['PrizeInfo'], None]

你也可以使用Optional[...]

Optional[List['PrizeInfo']]

意思是同样的事情。但是,我不会在List[...]暗示中使用它;这就好像你说的那样,元素的类型可能是可选的,这使得一个令人困惑的类型规范成为可能。

© www.soinside.com 2019 - 2024. All rights reserved.