Comments (5)
I will look into this. But by itself, "0" may be a valid iri reference if it can resolve to an absolute iri given a base iri.
I was hoping to avoid strictly validating $id
because in particular the older drafts were more lax with what it could contain.
from json-schema-validator.
We just tried migration from 1.2.0 to 1.3.0 and tests were broken.
Maybe you can keep previous behaviour for ascending compatibility and run your new code on a configuration basis?
from json-schema-validator.
The specification uses the term SHOULD NOT
instead of MUST NOT
and attempting to perform the validation by ensuring that the $id can resolve to an absolute IRI causes one of the tests in the JSON Schema Test Suite to fail. This particular test seems to have been introduced fairly recently.
What I will likely do is introduce a configurable JsonSchemaIdValidator
into the SchemaValidatorsConfig
and retain the current lax validation as default. I will likely also write a strict implementation of the validator that can be used.
from json-schema-validator.
I have looked at the previous behavior and it looks like it is a semi strict about the $id value. If you loaded your schema from a classpath resource using a URI it doesn't throw in the previous version either. Loading it without a base URI causes it to throw in the previous version. I will try to replicate this previous behavior and set it as the default validator.
from json-schema-validator.
This will be fixed in the next version in the following manner
- Adding a
JsonSchemaIdValidator
interface - Adding a
DefaultJsonSchemaIdValidator
implementation that implements the previous logic - The
DefaultJsonSchemaIdValidator
will be configured as default
This will make the behavior the same as 1.2.0.
That said if you really need the $id to be valid according to the spec, you would need to write your own implementation.
According to the spec
"$id" MUST NOT contain a non-empty fragment, and SHOULD NOT contain an empty fragment
The previous logic since 1.0.33 accepts non-empty fragment ids with the isUriFragmentWithNoContext
check.
The following schema does not throw in 1.2.0 and before.
{
"$id": "#0",
"$schema": "https://json-schema.org/draft/2020-12/schema"
}
from json-schema-validator.
Related Issues (20)
- Since 1.3.0: IllegalArgumentException instead of JsonSchemaException HOT 1
- Since 1.3.0: UUID not correctly validated HOT 3
- Since 1.3.0: date not correctly validated HOT 1
- Since 1.3.0: Validation fails on keyword 'uuid' HOT 1
- Since 1.3.0: Warnings for unknown keywords in $defs HOT 6
- Since 1.3.0 - `JsonSchema.getCurrentUri()` missing
- Since 1.3.1: unevaluatedProperties doesn't work with external schemas HOT 3
- Since 1.3.0: URIFactory is gone. Any migration guide? HOT 1
- SchemaValidatorConfig.setLocale(ENGLISH) does not work when running from non-english environments
- Error when resolving "$ref" with "dot slash" paths
- Custom Formats are not allowed for types other than Strings HOT 2
- FailFast Property Does Not Throw JsonSchemaException for Validation Errors in v1.3.1 HOT 3
- Too many errors reported when the "unevaluatedProperties" property is used
- Updating the version for com.networknt json-schema-validator from 1.0.74 to 1.3.2 runs into error for : Reference /definitions/testDocument cannot be resolved HOT 3
- Required validation does not seem to be getting triggered HOT 3
- Unevaluated properties and subschemas HOT 1
- Custom Validator for absent values HOT 4
- ethlo as an optional dependency?
- Handle Jackson Databind's 'MissingNode' null object better HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from json-schema-validator.