如何组合 Json 模式

Posted

技术标签:

【中文标题】如何组合 Json 模式【英文标题】:How to combine Json schemas 【发布时间】:2021-12-30 10:52:23 【问题描述】:

我有一个 C# 应用程序,其中包含多个类,其属性对应于 Json 文件中的条目。 我想根据我将使用 NewtonSoft 的模式生成器为类型创建的 Json 模式验证 Json 文件,例如 JSchema schema = generator.Generate(typeof(ClassName))。 我的问题是,这将为每个类生成一个 Json 模式,我想针对所有这些模式验证 Json 文件。 如何将 Json 模式组合成一个大的超级模式?

【问题讨论】:

如果您能提供更多关于这些多个类如何在这个“超级模式”中交互的信息,这可能会有所帮助。每个类都是子属性吗?它们是否重叠(例如,来自不同类的属性混合在同一个 JSON 对象中)?也许包含更多您的代码,格式为minimal?除了使事情更清楚之外,这也使帮助您的人更容易,因为他们没有从头开始重写您的所有课程等 【参考方案1】:

模式生成后,如果您希望模式生成一个,则可以使用 oneOf$ref 方法。


    "oneOf": [
        "$ref": "your path here", // the root schema, defining the object
        
            "type": "array", // the schema.
            "items": "$ref": "your path here"
        
    ]

【讨论】:

以上是关于如何组合 Json 模式的主要内容,如果未能解决你的问题,请参考以下文章

如何组合具有相同名称的 JSON 对象?

如何使用 json 函数用数据库填充组合框?

组合模式

如何通过 Node.js 或 NPM 模块组合/序列化此类 JSON 对象?

设计模式之组合模式

组合模式