如何指定object类型的属性只能出现一次(我认为这是默认值),N次或任何时间?甚至根本没有。
问题是,如果属性为' object'?
,如何将标准UML组合基数信息(min..max)转换为JSON模式"A" : {
"type" : "object",
"properties" : {
"B" : {
"type" : "object"
},
},
}
基于此架构,A可能只包含一个B,但我需要能够指定: - 如果它可能不包含任何内容 - 它可能包含更多(n) - 它可能包含任何
感谢: 恩德雷
答案 0 :(得分:2)
如果要在JSon中显示元定义信息,一个自然的解决方案是添加“MultiplicityElement”和“AggregationKind”属性(如在UML元模型中):
{
"A": {
"type": "object",
"properties": [
{
"B": {
"type": "object",
"AggregationKind": "composite",
"MultiplicityElement": {
"lower": 0,
"upper": "n"
}
}
}
]
}
}
在这种情况下,您可能希望使用“class”而不是“object”,因为您实际上是在定义类结构。 AggregationKind的替代值是“共享”(用于聚合)或“无”。
请注意,我将“属性”放在[]括号中,表示可以添加更多属性。
更新(第一次评论后)
首先 - JSon完全有效。在这个网站上采取行动:http://jsonlint.com/我没有时间调查你提出的错误的原因,我怀疑它与模式有关。
更重要的是 - 在这里要小心,我认为你将元模型与模型信息混合在一起。我在原来的答案中怀疑这一点,现在你几乎确认了。
问题是您是否打算显示类模型(元模型级别)的描述或对象模型(模型级别)的描述。
或澄清你的意图:)
答案 1 :(得分:1)
架构:
{
"type" : "object",
"properties" : {
"A" : {
"type" : "object",
"properties" : {
"B" : {
"type" : "array",
"minItems" : 1,
"maxItems" : 2
}
},
"required" : [ "B" ]
}
}
}
有效实例:
{
"A": {
"B" : [ 1 ]
}
}
另一个有效的实例:
{
"A": {
"B" : [ 1, 2 ]
}
}
无效的实例:
{
"A": {
}
}
另一个无效的实例:
{
"A": {
"B" : []
}
}
又一个无效的实例:
{
"A": {
"B" : [ 1, 2, 3]
}
}