You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并多个NewtonSoft生成的Json schema为统一超集schema

合并多个Newtonsoft生成的JSchema的实现方案

核心实现依赖JSON Schema标准中的allOf关键字,该关键字的作用就是要求待校验数据必须同时满足数组内所有子schema的规则,刚好匹配你的需求。

实现步骤

  • 第一步:生成所有类对应的独立JSchema
    先把所有需要参与校验的类对应的schema批量生成,存入集合:
// 初始化schema生成器
JSchemaGenerator generator = new JSchemaGenerator();
// 逐个生成对应类的schema并存入集合
List<JSchema> allClassSchemas = new List<JSchema>
{
    generator.Generate(typeof(ClassA)),
    generator.Generate(typeof(ClassB)),
    generator.Generate(typeof(ClassC))
    // 你需要的其他类依次添加即可
};
  • 第二步:构建合并后的超集schema
    直接创建新的JSchema对象,将上面的集合赋值给它的AllOf属性即可完成合并:
JSchema mergedSuperSchema = new JSchema
{
    AllOf = allClassSchemas
};
  • 第三步:校验逻辑直接复用
    后续校验流程无需调整,直接用生成的mergedSuperSchema校验目标JSON文件即可,校验时会自动检查JSON是否符合所有类对应的schema规则。

注意事项

  • 如果多个类存在同名属性,规则会自动叠加校验:比如ClassA定义Name为长度≥3的字符串,ClassB定义Name为长度≤10的字符串,合并后规则会自动生效为Name必须是长度3~10的字符串
  • 如果类之间存在嵌套引用关系,生成器会自动处理$ref引用,不会生成冗余重复规则

内容的提问来源于stack exchange,提问作者JockyMac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:06:03