OK, well, I am the author of both:
- the current JSON Schema validation spec;
- and the Java library which is the most used for JSON Schema validation in Java today: json-schema-validator.
So I can answer your question, and the basic answer is no.
Why? Because there is no such thing as schema inheritance currently defined.
When using allOf
, you require that all schemas in allOf
match; and if you are strict about what can exist in this or that JSON, you'll have added additionalProperties
to false
. As such, you cannot inherit.
The real solution is a mechanism I proposed for draft v5: the $merge
and $patch
keywords. These would allow to patch schemas with either of RFC 7386 or RFC 6902 (see here for more info) and indeed implement schema inheritance.
In short:
- if you set
additionalProperties
to false
, and your basic JSON is an object, you won't be able to define additional object members;
- with these two new keywords, you can.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…