Giter Site home page Giter Site logo

Comments (3)

lorenzodonini avatar lorenzodonini commented on May 26, 2024

Hello, thanks for spotting this. It's tricky because in Go the "empty" value for numerical values is literally 0, so passing a 0 value will cause the validation to fail. I understand that passing a zero value is a perfectly valid use case though.

The only thing I can think of is to remove validation for this field altogether. The downside is that an endpoint may send a completely empty json for a sampled value -> it will be considered valid and the parsed value will be 0.0.

from ocpp-go.

Clint-Mathews avatar Clint-Mathews commented on May 26, 2024

Hey @lorenzodonini, was checking the documentation though it is a required field the value can be zero.
As you said if removing that validation could cause an empty JSON to go in, can't we add custom validation checking if at least any fields have value?
My suggestion might not the best to do but still, it feels like a possible workaround

Even though all the other fields are optional, if none of the fields including the value is empty, that could be an empty request. Considering a real-time charger scenario, there will be value against a parameter like voltage or power. So a custom validation to check if its empty could be a viable solution.

Referred document: OCPP-2.0.1_part2_specifiction.pdf from Open Charge Alliance.

If the solution looks good I can write up the MR/PR!
Please let me know what you think :)

Also great work on the repo 😇

from ocpp-go.

lorenzodonini avatar lorenzodonini commented on May 26, 2024

Hey @Clint-Mathews, the Value field is not a pointer, so it will always contain a value (fallback being zero). If an empty json actually came in, the parsed value would be 0. Validation always occurs before/after converting to/from json format, which sadly doesn't allow you to determine whether the json was empty.

The best idea that comes to mind is to make the field a pointer type, which could then be correctly validated. That would be a breaking change though.
Or do you have any other concrete ideas for the validation? Totally open to suggestions.

from ocpp-go.

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.