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
对象旁边,请使用withNone
:
List[Union['PrizeInfo', None]]
如果您想说允许使用None
,或PrizeInfo
对象列表(在JSON术语中为null
或数组),则使用
Union[List['PrizeInfo'], None]
您还可以使用:
意思是一样的。但是,我不会在列表[…]中使用它;这就好像您在说元素的类型可能是可选的,这导致了一个混乱的类型规范。对于“空”列表没有注释。任何空列表对象都将满足list[…]
type提示,而不管列表内容必须是什么
因此,如果允许使用空列表,请使用
List['PrizeInfo']
这允许任何包含0个或更多元素的列表,因此空列表包含在该提示中
如果您想说None
值(null
在JSON中)允许位于PrizeInfo
对象旁边,请使用withNone
:
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
类型: