Comments (7)
Well. Those error messages are meant for developers, and they are meant to be able to show what validated against what and failed, so I'm a bit reluctant to have any possibly-relevant information be hidden there.
If that's something that's desirable for user-facing stuff though I think it'd be reasonable to add on top of jsonschema of course, either in a custom validator or as a function that operated on the errors.
from jsonschema.
Or I guess it'd be reasonable to show them in decreasing order as long as they all still appeared, but I couldn't guess at how much work it'd be to implement. Or your second idea is reasonable sounding, but it'd break the assumption that each error needs to be fixed on its own.
from jsonschema.
OK. But the error reporting is there to be able to locate the error, right? The problem is that even from the developer perspective it is hard to understand in the shown case what actually is wrong. But you know what, this is a simple example. In my work i came over this because I had a much more obscure situation, with nested multiple options, when I had to manually validate the json to know what went wrong.
from jsonschema.
If it was not important at all we would simply say that a json is invalid. But we are traversing down to the offensive members, so my point is that this should be as intelligent as possible, WDYT?
from jsonschema.
I have come up with a more descriptive example
Schema:
my_schema = {
"type": [
"number",
{
"type": [
{
"type": "array",
"items": {
"type": [
"number",
{
"type": "object",
"properties": {
"value": { "type": "string", "required": True }
}
}
]
},
"additionalItems": False
},
"number"
]
}
]
}
now all three following instances
my_json1 = " 1, { \"value1\": 1 } "
my_json2 = [ 1, { "value": 1 } ]
my_json3 = [ 1, { "val": "1" } ]
give the same error:
'...' is not of type 'number', {'type': [{'items': {'type': ['number', {'type': 'object', 'properties': {'value': {'required': True, 'type': 'string'}}}]}, 'additionalItems': False, 'type': 'array'}, 'number']}
from jsonschema.
Well yeah if you have a really complicated thing it's going to be hard to find I guess.
So, I'm not inherently making this easier of course, but it'd depend on how much complication would be introduced by adding something like this.
Also, besides that, I'm not sure this is the best way to help. I have a sort of debug-mode kind of thing in mind to eventually implement which will show each validator method, what it was called with, and where it failed. I'm more inclined to think that that would be a general better solution.
But if you want to take a crack at this and it's not too complicated I'd merge it.
from jsonschema.
Continuing discussion in #51.
from jsonschema.
Related Issues (20)
- Support encountering of a `"deprecated": true` keyword by propagating a deprecation warning HOT 7
- Bug: checking required fields doesn't produce error when not present. HOT 2
- Failed to validate the schema when shifted from RefResolver to Registry HOT 4
- ModuleNotFoundError: No module named 'rpds.rpds' HOT 6
- PyO3 error HOT 5
- Draft07Valiadator doesn't validate dates HOT 1
- Inconsistent behaviour of validator_for depending on http vs https HOT 2
- Validation starting from sub-definition
- Getting schema contents after refs are resolved HOT 1
- `format: uri` doesn't work properly HOT 4
- Issue with oneOf validation HOT 6
- Unable to resolve a realtive `$ref` from a schema with `$id` pointed to a subschema in `$defs` with `$id` HOT 2
- Self referenced schema encapsulation breaks reference resolution HOT 1
- jsonschema.TypeChecker with additional types fails to work after several reference resolutions by the referencing.Registry HOT 2
- validate fails to identify incorrect uuid strings HOT 3
- 'Tuple' arrays not handled correctly HOT 3
- validate() throwing exception for a valid schema HOT 1
- Draft7Validator(TyperError: create.<locals>.Validator.__init__() got an unexpected keyword argument 'registry' HOT 2
- Which is the last version not requiring Rust via its dependencies?
- Migrating From RefResolver, unable to resolve $ref
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 jsonschema.