考虑一个“复杂”模式,该模式使用来自其他文件的引用,例如下面的文件。是否有一种简单的方法来获取模式中定义的所有属性的列表,也许使用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])