微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用于数据验证和类生成的系统Avro,Json Schema和OpenAPI

如何解决用于数据验证和类生成的系统Avro,Json Schema和OpenAPI

我们希望拥有一个系统,该系统允许我们定义数据架构,以用于验证数据并生成特定语言的代码。我们发现json模式可以让我们做类似的事情

文件“ message.json.schema”

{
    "$schema": "https://json-schema.org/draft/2019-09/schema","title": "Message","properties": {
            "name": {
        "type" : "string"
        },"type": {
                "$ref": "type/message_type.schema.json"
            },"message_id":{
            "$ref": "type/uuid.schema.json"
        }
    },"required": ["name","message_id"]
}

文件“ message_type.json.schema”


{
    "$schema": "https://json-schema.org/draft/2019-09/schema","title": "MessageType","enum": ["Message","Query"]
}

文件“ uuid_type.json.schema”

{
    "$schema": "https://json-schema.org/draft/2019-09/schema","title": "UUID","type": "string","pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
}

文件“ query.json.schema”

{
    "$schema": "https://json-schema.org/draft/2019-09/schema","title": "Query","allOf" : [ {"$ref": "type/message.schema.json" }],"required": ["type"]
}

请忽略是否存在没有意义的问题,但关键是,我们真的很喜欢这个系统,因为它允许我们定义类型,并引用我们在另一个文件中创建的类型,甚至可以使用它们喜欢类型继承。

然后,我们要使用此文件进行代码生成和验证。然后,在python中,我们使用一个名为 python_jsonschema_objects 的库,该库可以递归地解析此文件及其引用的文件,然后我们可以真正简单地创建一个包含所有验证的python对象。

但是随后我们也想将它们用于Java / Kotlin,但是我们发现 jsonschema2pojo 的库似乎无法解析链接文件,期望所有内容都在同一文件中。

不幸的是,这使我们认为Json Schema不受支持或使用。

因此,我们有一个问题,就是像Avro或OpenAPI这样的系统是否会得到更好的支持并得到更广泛的使用,是否可以选择用于此类任务。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。