JSON架构:输入格式错误

时间:2014-11-17 17:53:07

标签: python json jsonschema

我正在使用基于jsonschema的Tornado_JSON,我的架构定义存在问题。我尝试在一个在线模式验证器中修复它,问题似乎在于"additionalItems": True。资本True的{​​{1}}适用于python,并导致在线验证程序(T)出错。使用Schema is invalid JSON.,在线验证器很高兴并且示例json对模式进行验证,但我的python脚本不再启动(true)。能以某种方式解决这个问题吗?

NameError: name 'true' is not defined

我根据您的评论( 外部文件与json.loads() )进行了更改。完善。谢谢。

2 个答案:

答案 0 :(得分:1)

将架构放在三引号字符串或外部文件中,然后用json.loads()解析它。使用小写拼写。

答案 1 :(得分:0)

该错误源于尝试将内置Python数据类型放入JSON模式中。后者是一种模板语法,用于检查类型一致性,不应保存实际数据。相反,在input_schema下,您需要将"additionalItems"定义为{ "type": "boolean" },然后将其添加到input_example中的测试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
}