breese / trial.protocol

Network wire protocols
11 stars 4 forks source link

JSON Schema support #27

Closed vinipsmaker closed 6 years ago

vinipsmaker commented 6 years ago

I have no need for this feature in the very long road. Actually, I could use them if there was an algorithm to generate random JSONs based on a JSON schema so I could add fuzzy testings in my applications, but I don't want to. This issue is just a reminder for missing features.

Specification (still a draft): http://json-schema.org/

RapidJSON has this feature: http://rapidjson.org/md_doc_schema.html

And Mozilla services use RapidJSON because they need JSON Schema validation: https://github.com/mozilla-services/mozilla-pipeline-schemas

breese commented 6 years ago

I think schema support should be build as a separate project, because it relies on a number of components such as regular expressions, URI parser, and JSON Pointer. I do not plan to include any of these into Trial.Protocol, but there is no reason why somebody else couldn't implement JSON Schema with Trial.Protocol, or better yet with trial::dynamic::variable to make it more generic.

The same goes for JSON Pointer, JSON Path, and so on.

I believe we only have to add a recursive iterator for dynamic::variable to support these components.

vinipsmaker commented 6 years ago

Fair enough.

vinipsmaker commented 6 years ago

Qt also splits its XML module in two:

This split may be the best way to go.