Python JSON,列表可能为空-什么类型?

Python JSON,列表可能为空-什么类型?,python,json,type-hinting,Python,Json,Type Hinting,我想指定一个具有属性的对象。这可能是PrizeInfo对象列表,也可能是空列表。我正在寻找类似以下代码的模式,除了返回以下错误: "MySchema": { "properties": { "prizes": { "type": "List['PrizeInfo', 'null']", } } } E TypeError: Too many parameters for typing.List; actual 2,

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

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

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

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

对于“空”列表没有注释。任何空列表对象都将满足
list[…]
type提示,而不管列表内容必须是什么

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

List['PrizeInfo']
这允许任何包含0个或更多元素的列表,因此空列表包含在该提示中

如果您想说
None
值(
null
在JSON中)允许位于
PrizeInfo
对象旁边,请使用with
None

List[Union['PrizeInfo', None]]
如果您想说允许使用
None
,或
PrizeInfo
对象列表(在JSON术语中为
null
或数组),则使用

Union[List['PrizeInfo'], None]
您还可以使用:


意思是一样的。但是,我不会在
列表[…]中使用它;这就好像您在说元素的类型可能是可选的,这导致了一个混乱的类型规范。

对于“空”列表没有注释。任何空列表对象都将满足
list[…]
type提示,而不管列表内容必须是什么

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

List['PrizeInfo']
这允许任何包含0个或更多元素的列表,因此空列表包含在该提示中

如果您想说
None
值(
null
在JSON中)允许位于
PrizeInfo
对象旁边,请使用with
None

List[Union['PrizeInfo', None]]
如果您想说允许使用
None
,或
PrizeInfo
对象列表(在JSON术语中为
null
或数组),则使用

Union[List['PrizeInfo'], None]
您还可以使用:


意思是一样的。但是,我不会在
列表[…]中使用它;这就好像您在说元素的类型可能是可选的,这导致了混淆的类型规范。

您的意思是使用类型暗示吗?然后,
'null'
不是有效的类型提示。无论如何,您应该使用Python对象
None
List[]
不能指定列表的大小,因此
List[PrizeInfo]
已经允许空列表。@MartijnPieters,.'null'是JSON中的有效类型。但类型暗示不是JSON。您在JSON字符串中指定的是Python语法,而不是该字符串中的JSON语法。JSON将使用
null
,而不是Python字符串
'null'
。不要把两者混为一谈。你的意思是使用类型暗示吗?然后,
'null'
不是有效的类型提示。无论如何,您应该使用Python对象
None
List[]
不能指定列表的大小,因此
List[PrizeInfo]
已经允许空列表。@MartijnPieters,.'null'是JSON中的有效类型。但类型暗示不是JSON。您在JSON字符串中指定的是Python语法,而不是该字符串中的JSON语法。JSON将使用
null
,而不是Python字符串
'null'
。不要将两者混用。毕竟,
[]
的所有元素都属于
PrizeInfo
:)类型毕竟,
[]
的所有元素都属于
PrizeInfo
类型: