从架构中检索所有属性的列表(解析引用)

时间:2018-07-18 02:40:52

标签: python jsonschema python-jsonschema

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

0 个答案:

没有答案