JSon模式和继承
我已经使用具有继承性的Java绑定搜索了json模式,并且所有搜索都导致我使用“ allOf”。
使用allOf可能会解决我的问题,但我想知道json模式中是否有可以使用的构造,该构造将生成具有真实Java继承“ B扩展A”的Java代码-
而不是在B内插入A的所有属性?
我想知道这是否被支持/可行,或者我只是在做梦。如果不支持,我很想知道原因。
回答:
好吧,我是两者的作者:
- 当前的JSON Schema验证规范;
- 以及当今在Java中最常用于JSON模式验证的Java库:json-schema-validator。
因此,我可以回答您的问题,而基本答案是“否”。
为什么?因为当前没有定义架构继承这样的东西。
使用时allOf
,您需要所有模式都allOf
匹配;并且如果您对此JSON中存在的内容严格要求,则将添加additionalProperties
到中false
。因此,您无法继承。
真正的解决方案是我针对v5草案提出的一种机制:$merge
and $patch
关键字。这些将允许使用RFC 7386或RFC
6902修补架构(请参阅此处以获取更多信息),并确实实现架构继承。
简而言之:
- 如果设置
additionalProperties
为false
,并且基本JSON是对象,则将无法定义其他对象成员; - 使用这两个新关键字,您可以。
以上是 JSon模式和继承 的全部内容, 来源链接: utcz.com/qa/400002.html