2

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

0 回答 0