JSON模式-具有相同数据类型的对象

JSON模式-具有相同数据类型的对象,json,node.js,jsonschema,Json,Node.js,Jsonschema,我生成了以下JSON: { "someString" : "example", "obj1" : { "opt1" : 1, "opt2" : 1, "opt3" : "aaa" }, "obj2" : { "opt1" : 55, "opt2" : 55, "opt3" : "bbb" } } 并且将有更多具有相同数据类型(opt1、opt2、opt3)的对象(obj1、obj2、obj3、obj4等) 现在我想为此创建模

我生成了以下JSON:

{
 "someString" : "example",
 "obj1" : {
     "opt1" : 1,
     "opt2" : 1,
     "opt3" : "aaa"
 },
 "obj2" : {
     "opt1" : 55,
     "opt2" : 55,
     "opt3" : "bbb"
 }
}
并且将有更多具有相同数据类型(opt1、opt2、opt3)的对象(obj1、obj2、obj3、obj4等)

现在我想为此创建模式,但我不知道如何在模式中组合所有这些对象

编辑:

我创建了架构:

root: {
    "type" : "object",
    "oneOf" : [
        {
        "properties" : {
            "someString" : { "type" : "string" }
        },
        "patternProperties" : { "^.*$" : { "$ref" : "./schemas/myPatternProperties.json#" } },
        "additionalProperties" : false }
        }
    ]
}
而myPatternProperties.json看起来:

{
    "type" : "object",
    "properties" : {
        "opt1" : { "type" : "number" },
        "opt2" : { "type" : "number" },
        "opt3" : { "type" : "string" },
    }
    "required" : [ "opt1", "opt2", "opt3" ]
}

是否有任何错误,因为我生成的JSON仍然没有被识别为这种模式类型。

据我所知,您的问题是
使用许多相同类型的属性和一些命名规则来描述对象。要解决此问题,必须指定
patternProperties
部分

{
    "patternProperties": {
        "^(/[^/]+)+$": { "$ref": "http://some.site.somewhere/entry-schema#" }
}
该构造为属性指定要匹配的
模式。示例阅读更多信息,请访问

更新

实际上,完整的计划一定是这样的

{
    "$schema": "http://json-schema.org/draft-06/schema#",
    "type": "object",
    "properties": {
        "someString": {
            "type": "string"
        }
    },
    "patternProperties": {
        "^obj([0-9]+)$": {
            "$ref": "#/definitions/objEntity"
        }
    },
    "additionalProperties": false,
    "required": [ "someString" ],

    "definitions": {
        "objEntity": {
            "type": "object",
            "properties": {
                "opt1": { "type": "number" },
                "opt2": { "type": "number" },
                "opt3": { "type": "string" }
            },
            "required": ["opt1", "opt2", "opt3"]
        }
    }
}

当然,您可以将该方案拆分为多个文件,并将链接更改为类型定义。

感谢回复模式,这正是我所需要的。我创建了一些模式。我想我错过了这个模式中的一些东西,因为它仍然不能正常工作。您是否收到任何错误消息?您的示例数据在JSONBuddy中实际上验证得很好。不,我不明白。为了检查方案,我使用Node.js和prettyjson模块使用Im。Im调用:var jsonData=JSON.parse(jsonString);然后是console.log(prettyjson.render(jsonData));在输出中,我得到了一些顺序不正确的字段。例如,没有:opt1,opt2,opt3,但出于某种原因:opt3,opt1,opt2。每次运行这个程序,顺序都会改变。