JSON模式模板和JSON编辑器
我已经挣扎了几天,试图使用Javascript插件。我正在使用,但我对解决我的问题的主张持开放态度 我创建了一个JSON模板,到目前为止运行良好,但这并没有完全达到我需要做的事情,我尝试理解并使用JSON编辑器github页面提供的语法,但到目前为止运气不佳 如何使模板的行为如下所示: 如果features.type的值==“Point”,则我希望features.display具有类型为“#/definitions/marker”的属性。否则(features.type==“Polygon”),我希望features.display具有类型为“#/definitions/area”的属性。filter.display也是如此 到目前为止,我使用了“oneOf”属性,因为它最接近我想要的,但肯定不完全如此 谢谢你的帮助 亲切的问候 以下是我迄今为止的JSON模式:JSON模式模板和JSON编辑器,json,editor,jsonschema,swig-template,Json,Editor,Jsonschema,Swig Template,我已经挣扎了几天,试图使用Javascript插件。我正在使用,但我对解决我的问题的主张持开放态度 我创建了一个JSON模板,到目前为止运行良好,但这并没有完全达到我需要做的事情,我尝试理解并使用JSON编辑器github页面提供的语法,但到目前为止运气不佳 如何使模板的行为如下所示: 如果features.type的值==“Point”,则我希望features.display具有类型为“#/definitions/marker”的属性。否则(features.type==“Polygon”)
{
"type": "array",
"title": "Layers",
"items": {
"title": "Layer",
"type": "object",
"headerTemplate": "{{table.id.public_name}}",
"properties": {
"table":{"$ref": "#/definitions/table"},
"features":{"$ref": "#/definitions/features"}
}
},
"definitions": {
"table": {
"title": "Table Information",
"type": "object",
"properties": {
"id":{"$ref": "#/definitions/id"},
"primary_key":{"$ref": "#/definitions/primary_key"},
"read":{"$ref": "#/definitions/read"}
}
},
"features": {
"title": "Features Settings",
"type": "object",
"properties": {
"type":{"$ref": "#/definitions/type"},
"id":{"$ref": "#/definitions/id"},
"cols":{"$ref": "#/definitions/cols"},
"display": {
"type": "object",
"title": "Display",
"format": "grid",
"oneOf": [
{"$ref": "#/definitions/marker"},
{"$ref": "#/definitions/area"}
]
}
}
},
"cols": {
"title": "Table Columns",
"type": "array",
"items": {
"type": "object",
"title": "Column",
"properties": {
"id":{"$ref": "#/definitions/id"},
"read":{"$ref": "#/definitions/read"},
"write":{"$ref": "#/definitions/write"},
"filter":{"$ref": "#/definitions/filter"}
}
}
},
"id": {
"title": "Identifier",
"type": "object",
"format": "grid",
"properties": {
"name":{"$ref": "#/definitions/name"},
"public_name":{"$ref": "#/definitions/public_name"}
}
},
"name": {
"title": "Name",
"type": "string"
},
"public_name": {
"title": "Public Name",
"type": "string"
},
"primary_key": {
"title": "Primary key",
"type": "string",
"format": "grid"
},
"write": {
"title": "Editing",
"type": "object",
"format": "grid",
"properties": {
"read":{"$ref": "#/definitions/read"},
"method":{"$ref": "#/definitions/method"}
}
},
"read": {
"title": "Reading",
"type": "array",
"items": {
"type": "integer",
"title": "Access Level",
"format": "grid",
"properties":{"$ref": "#/definitions/access_level"}
}
},
"type": {
"title": "Type",
"type": "string",
"enum": [ "Point", "Polygon" ]
},
"access_level": {
"title": "Access Level",
"type": "integer",
"format": "number"
},
"method": {
"title": "Method",
"type": "object",
"format": "grid",
"properties": {
"type":{"$ref": "#/definitions/method_type"},
"data":{"$ref": "#/definitions/data"}
}
},
"data": {
"title": "Data",
"type": "array",
"items": {
"type": "string",
"title": "Data",
"format": "grid",
"properties":{"$ref": "#/definitions/value"}
}
},
"value": {
"title": "Value",
"type": "string"
},
"filter": {
"title": "Filter",
"type": "array",
"items": {
"type": "object",
"title": "Filter",
"properties": {
"value":{"$ref": "#/definitions/value"},
"display": {
"type": "object",
"oneOf": [
{"$ref": "#/definitions/marker"},
{"$ref": "#/definitions/area"}
]
}
}
}
},
"marker": {
"title": "Marker",
"type": "object",
"format": "grid",
"properties": {
"color":{"$ref": "#/definitions/color"},
"icon":{"$ref": "#/definitions/icon"}
}
},
"color": {
"title": "Color",
"type": "string",
"enum": ["red", "darkred", "orange", "green", "darkgreen", "blue", "purple", "darkpuple", "cadetblue"]
},
"css_color": {
"title": "CSS Color",
"type": "string",
"format": "color"
},
"icon": {
"title": "Icon",
"type": "object",
"format": "grid",
"properties": {
"name":{"$ref": "#/definitions/name"},
"color":{"$ref": "#/definitions/css_color"}
}
},
"area": {
"title": "Area",
"type": "object",
"properties": {
"color":{"$ref": "#/definitions/color"},
"border":{"$ref": "#/definitions/border"}
}
},
"border": {
"title": "Border",
"type": "object",
"properties": {
"border_color":{"$ref": "#/definitions/border_color"},
"width":{"$ref": "#/definitions/width"}
}
},
"border_color": {
"title": "Color",
"type": "object",
"format": "grid",
"properties": {
"normal":{"$ref": "#/definitions/normal"},
"hover":{"$ref": "#/definitions/hover"}
}
},
"width": {
"title": "Width",
"type": "string"
},
"normal": {
"title": "Normal",
"type": "string",
"format": "color"
},
"hover": {
"title": "Hover",
"type": "string",
"format": "color"
},
"method_type": {
"title": "Type",
"type": "string",
"enum": [ "text", "select" ]
}
}
}
强制执行此操作的唯一方法(直到jsonschema草案5出现)是将枚举用作鉴别器。你可以在中找到一个例子,谢谢你的建议!我结束了对几个文件的引用,创建了一个双分支层次结构,并在插件初始化时选择了正确的体系结构。迫不及待地等待草案5,这将使生活更加轻松!