Giter Club home page Giter Club logo

Comments (7)

Julian avatar Julian commented on May 25, 2024

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.

Julian avatar Julian commented on May 25, 2024

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.

P-Product avatar P-Product commented on May 25, 2024

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.

P-Product avatar P-Product commented on May 25, 2024

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.

P-Product avatar P-Product commented on May 25, 2024

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.

Julian avatar Julian commented on May 25, 2024

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.

Julian avatar Julian commented on May 25, 2024

Continuing discussion in #51.

from jsonschema.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.