考虑一个“复杂”模式,它使用来自其他文件的引用,如下面的文件。有没有一种简单的方法来获取模式中定义的所有属性的列表,也许使用一些已经在的机制python-jsonschema
?我认为我只需要顶层的属性,但通用的方法会很棒。
我需要很多应用程序,但基本上我需要能够仅对与模式中定义的模式匹配的对象的那些“属性”运行不同的操作(这样我也不会将这些操作应用于任何架构中未定义的其他属性)。例如,假设我想打印对象所具有的每个属性的值,这是在模式中定义的。为此,我需要架构定义的属性列表。另一个例子是,如果我想仅基于模式定义的属性比较两个对象。
{
"$schema": "http://json-schema.org/schema#",
"allOf": [
{
"$ref": "file:/some/file.json"
}
],
"properties": {
"a": {
"type": "string"
}
}
}
示例应用:
# Load an object that has attributes conforming to the schema in `schema`
obj = Schema_Conforming_Object(schema)
# Get a list of all properties defined in the schema
# This is what I'm not sure how to do nicely
props = properties_of_schema(schema)
for pr in props:
if pr in obj:
print(obj[pr])