Python JSON架构:输入格式不正确
我使用的是基于jsonschema的Tornado_JSON,我的模式定义有问题。我尝试在一个在线模式验证器中修复它,问题似乎出在Python JSON架构:输入格式不正确,python,json,jsonschema,Python,Json,Jsonschema,我使用的是基于jsonschema的Tornado_JSON,我的模式定义有问题。我尝试在一个在线模式验证器中修复它,问题似乎出在“additionalItems”:TrueTrue带大写字母T适用于python,并导致在线验证器中出现错误(Schema是无效的JSON。)。使用true在线验证器会很高兴,示例json会根据模式进行验证,但我的python脚本不再启动(NameError:name'true'未定义)。这个问题能解决吗 @schema.validate( """i
“additionalItems”:True
True
带大写字母T
适用于python,并导致在线验证器中出现错误(Schema是无效的JSON。
)。使用true
在线验证器会很高兴,示例json会根据模式进行验证,但我的python脚本不再启动(NameError:name'true'未定义
)。这个问题能解决吗
@schema.validate(
"""input_schema={
'type': 'object',
'properties': {
'DB': {
'type': 'number'
},
'values': {
'type': 'array',
'items': [
{
'type': 'array',
'items': [
{
'type': 'string'
},
{
'type': [
'number',
'string',
'boolean',
'null'
]
}
]
}
],
'additionalItems': true
}
}
},
input_example={
'DB': 22,
'values': [['INT', 44],['REAL', 33.33],['CHAR', 'b']]
}"""
)
我根据您的评论更改了它(带有json.loads()的外部文件)。完美的谢谢。错误源于试图将内置Python数据类型放入JSON模式。后者是用于检查类型一致性的模板语法,不应保存实际数据。相反,在
input\u模式下
您需要将的“additionalItems”
定义为{“type”:“boolean”}
,然后将其添加到input\u示例
中的测试JSON中,之后使用一个布尔值进行测试
另外,我对Tornado_JSON不太熟悉,但将“additionalItems”
放在“values”
属性中似乎不符合模式定义语言。把它提高一个层次
更具体地说,我认为您要做的应该是:
"values": {
...value schema definition...
}
"additionalItems": {
"type": "boolean"
}
输入示例将变成:
input_example={
"DB": 22,
"values": [['INT', 44],['REAL', 33.33],['CHAR', 'b']],
"additionalItems": true
}
将架构放入三重引号字符串或外部文件中,然后使用
json.loads()
解析它。使用小写字母拼写。谢谢比约森。它的意思是作为一个模式属性,用于允许多个项目,如前所述。啊,在这种情况下,问题是Python试图在input\u模式
之后{…}创建一个字典。如果您用小写的true
三次引用整个架构定义,它应该可以工作。